69. x 的平方根
思路
采用二分算法进行1到x的查找,思路为:因为舍弃小数,所以middle的平方一定小于x,而middle+1一定大于x
class Solution {
public:
int mySqrt(int x) {
int left = 1;
int right = x;
while(left <= right)
{
long middle = left + ((right - left - 1)/2);//设置middle为长整形,否则会溢出
if(middle * middle > x )
{
right = middle - 1;
}
else if(middle * middle < x)//思路为:因为舍弃小数,所以middle的平方一定小于x,而middle+1一定大于x
{
if((middle + 1) * (middle + 1) > x)
{
return middle;
}
else
{
left = middle + 1;
}
}
else
{
return middle;
}
}
return 0;
}
};