实现 int sqrt(int x) 函数,计算并返回 x 的平方根。
您在真实的面试中是否遇到过这个题?
Yes
样例
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3
class Solution {
public:
/**
* @param x: An integer
* @return: The sqrt of x
*/
int sqrt(int x) {
// write your code here
int low=0;
int high=x;
while(low<=high){
int mid=(low+high)/2;
long long res=(long long)mid* (long long)mid;
long long res1=(long long )(mid+1)*(long long)(mid+1);
long long res2=(long long )(mid-1)*(long long )(mid-1);
if(res==x){
return mid;
}
if(x>res&&x<res1){
return mid;
}
if(x<res&&x>res2){
return mid-1;
}
if(x==res1){
return mid+1;
}
if(x==res2){
return mid-1;
}
if(x>res1){
low=mid+1;
}
else
{
high=mid-1;
}
}
return -1;
}
};