思路:從1 - x 查找 res * res = x; 可以采用二分查找的算法。
注意溢出問(wèn)題。
當(dāng)left <= right 沒(méi)有找到值是,就是小數(shù)询一, 類似 Sqrt(8) = 2.8..; 在2 - 3 之間癌椿。最后返回的時(shí)候返回right家凯,因?yàn)閞ight比left小。
public static int sqrt(int x)
{
if (x <= 1) {
return x;
}
int left = 1;
int right = x;
while (left <= right) {
int mid = left + (right - left) / 2;
if (mid == x / mid) {
return mid;
}
else if (x / mid > mid) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return right;
}