题目:
Implement int sqrt(int x)
.
Compute and return the square root of x.
思路:
利用二分法查找:第一种可能性是直接找到能够麻烦要求的数;第二种可能性是找到相邻的两个数,可以比较两个数哪一个离target更近,不过题目当中希望找的是更小的那个数。代码:
class Solution {
public:
int sqrt(int x) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(x<=1)
{
return x;
}
int left = 1;
int right = x;
while(left<=right)
{
int mid = left + ((right-left)>>1);
if(mid == x/mid)
{
return mid;
}
else if(mid < x/mid)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return right;
/*int r = right * right;
int l = left * left;
if((x-r) > (l-x))
{
return left;
}
else
{
return right;
}*/
}
};