Implement int sqrt(int x).
Compute and return the square root of x.
求平方根。
思路是二分法。通过x/mid>mid? 来判断取左半部分还是右半部分。
public class Solution {
public int MySqrt(int x) {
if (x == 0)
return 0;
int left = 1, right = int.MaxValue;
while (true) {
int mid = left + (right - left)/2;
if (mid > x/mid) {
right = mid - 1;
}
else {
if (mid + 1 > x/(mid + 1))
return mid;
left = mid + 1;
}
}
}
}