Implement int sqrt(int x)
.
Compute and return the square root of x.
这道题目没看到二分查找的提示的时候感觉还是比较难的,虽然用自己的方法能做出来,但是性能太差了。
在不管使用什么方法时都要注意不要出现比x大的int型变量,否则极易溢出。n^2 > x 这种表达式最好都改写为 n > x /2.
java实现如下:
public class Solution {
public int mySqrt(int x) {
if(x == 0)
return 0;
int start = 1 ;
int end = x /2 +1 ;
int mid = (start + end) /2 ;
while(start <= end){
if(mid > x /mid)
end = mid -1;
else
start = mid +1;
mid = (start + end) /2;
}
return mid ;
}
}