x的平方根
lintcode 题目链接
class Solution {
public:
/**
* @param x: An integer
* @return: The sqrt of x
*/
int binary_search(long l,long r, long &x){
while(l<=r)
{
long mid=(l+r)>>1;
long long ans1=mid*mid;
long long ans2=(mid+1)*(mid+1);
if(ans1>x)
r=mid-1;
else if(ans1<x && ans2<=x)
l=mid+1;
else if(ans1<=x &&ans2>x)
return mid;
}
return 0;
}
int sqrt(int x) {
// write your code here
long r=x;
if(r>3) r>>1;
return binary_search(1,r,r);
}
};