/*給你乙個非負整數 x ,計算並返回 x 的 算術平方根 。
由於返回型別是整數,結果只保留 整數部分 ,小數部分將被 捨去 。
思路:注意:不允許使用任何內建指數函式和算符,例如 pow(x, 0.5) 或者 x ** 0.5
從題目的要求和示例我們可以看出,這其實是乙個查詢整數的問題,並且這個整數是有範圍的。
如果這個整數的平方 恰好等於 輸入整數,那麼我們就找到了這個整數;
如果這個整數的平方 嚴格大於 輸入整數,那麼這個整數肯定不是我們要找的那個數;
如果這個整數的平方 嚴格小於 輸入整數,那麼這個整數 可能 是我們要找的那個數(重點理解這句話)。
因此我們可以使用「二分查詢」來查詢這個整數,不斷縮小範圍去猜。
猜的數平方以後大了就往小了猜;
猜的數平方以後恰恰好等於輸入的數就找到了;
猜的數平方以後小了,可能猜的數就是,也可能不是。
很容易知道,題目要我們返回的整數是有範圍的,直覺上乙個整數的平方根肯定不會超過它自己的一半,但是 00 和 11 除外,因此我們可以在 11 到輸入整數除以 22 這個範圍裡查詢我們要找的平方根整數。00 單獨判斷一下就好。
*/public class solution
if (x == 1)
int left = 1;
int right = x / 2;
// 在區間 [left..right] 查詢目標元素
while (left < right) else
}return left;
}}
x的平方根
題目三十九 實現int sqrt int x 函式,計算並返回 x 的平方根。您在真實的面試中是否遇到過這個題?yes 樣例sqrt 3 1 sqrt 4 2 sqrt 5 2 sqrt 10 3 挑戰 o log x class solution if i ix return i if i i x...
x的平方根
實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。看到這個題,當時想到了利用二分法,查詢x的平方根。寫出了如下 public int mysqrt int x else if m m x m m 0 else return l 但是這個方法並不適用大數,因為m...
x的平方根
實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842 由於返回型別是整數,小數部分將被捨去。袖珍計算器演算...