Implement int sqrt(int x)
.
Compute and return the square root of x.
Example
Example 1:
Input: 0
Output: 0
Example 2:
Input: 3
Output: 1
Explanation:
return the largest integer y that y*y <= x.
Example 3:
Input: 4
Output: 2
Challenge
O(log(x))
思路:binary search,注意0的判断和long防止溢出;标准模板写的。
class Solution {
public int mySqrt(int x) {
if(x < 0) {
return -1;
}
if(x == 0) {
return 0;
}
long start = 0; long end = x;
while(start + 1 < end) {
long mid = start + (end - start) / 2;
if(mid * mid < x) {
start = mid;
} else {
end = mid;
}
}
if(end * end > x) {
return (int)start;
} else {
return (int)end;
}
}
}