題目:
給你一個非負整數?x
?,計算并返回?x
?的?算術平方根?。
由于返回類型是整數,結果只保留?整數部分?,小數部分將被?舍去 。
注意:不允許使用任何內置指數函數和算符,例如?pow(x, 0.5)
?或者?x ** 0.5
?。
示例 1:
輸入:x = 4
輸出:2
示例 2:
輸入:x = 8
輸出:2
解釋:8 的算術平方根是 2.82842..., 由于返回類型是整數,小數部分將被舍去。
提示:
0 <= x <= 231 - 1
代碼:?
class Solution {public int mySqrt(int x) {int left = 0;int right = x;int ans = -1;while (left <= right) {int mid = (right - left) / 2 + left;if ((long)mid * mid <= x) {left = mid + 1;ans = mid;} else{right = mid - 1;}}return ans;}
}
解釋:
該題主要找一個數的平方等于題目給的數字,但如果是小數,需要舍去小數部分,只留整數部分,因此在編寫的時候注意邊界,即如果該數平方大于給定的數字,則不考慮,具體理解上方代碼。
注意:
如果將最后的值輸出。