實現 int sqrt(int x) 函數。git
計算並返回 x 的平方根,其中 x 是非負整數。github
因爲返回類型是整數,結果只保留整數的部分,小數部分將被捨去。golang
示例1:面試
輸入: 4 輸出: 2
示例2:算法
輸入: 8 輸出: 2 說明: 8 的平方根是 2.82842..., 因爲返回類型是整數,小數部分將被捨去。
// 暴力解法 func mySqrt(x int) int { for i := 0; i <= x; i++ { res := i * i if res == x { return i } else if res > x { return i - 1 } } return -1 }
//在有序數組中,找到最後一個小於等於給定值的數 func mySqrt2(x int) int { low, high := 0, x for low <= high { //防止大數相加溢出 //位運算更高效 mid := low + (high-low)>>1 product := mid * mid if product > x { high = mid - 1 } else { if (mid == x) || (mid+1)*(mid+1) > x { //遍歷最後一個數 || 下一個數大於目標值 return mid } //下一個數小於等於目標值,因此mid不是最後一個數 low = mid + 1 } } return -1 }
極客時間 數據結構與算法之美數據結構
本文爲原創文章,轉載註明出處,歡迎掃碼關注公衆號
tomorrowwu
或者網站
https://lovecoding.club,第一時間看後續精彩文章,以爲好的話,順手分享到朋友圈吧,感謝支持。