實現 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
}
複製代碼
極客時間 數據結構與算法之美bash
本文爲原創文章,轉載註明出處,歡迎掃碼關注公衆號
tomorrowwu
或者網站lovecoding.club,第一時間看後續精彩文章,以爲好的話,順手分享到朋友圈吧,感謝支持。數據結構