实现 int sqrt(int x)
函数,计算并返回 x 的平方根。
样例
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3
挑战
O(log(x))
class Solution {
/**
* @param x: An integer
* @return: The sqrt of x
*/
public int sqrt(int x) {
// write your code here
long left=0;
long right=x;
if(x<=0){
return 0;
}
while(left<right){
long mid=(left+right)/2;
if(mid*mid==x){
return (int) mid;
}else if(mid*mid>x){
right=mid;
}else if(mid*mid<0){
right=right>>1;
}else{
break;
}
}
long sq=0;
for(long i=left;i<=right;i++){
if(i*i<=x&&(i+1)*(i+1)>x){
sq=i;
break;
}
}
return (int) sq;
}
}