这道题求x的平方根。
注意用long long。写的时候最后一个return right总是写不对。因为如果x不能得到整数平方根,那么就向下取整。由于在while结束时,left会指向较大的整数,right指向较小的整数,所以返回right
class Solution {
public:
int mySqrt(int x) {
if(x < 2) return x;
long long left = 1, right = x;
while(left <= right)
{
long long mid = left + (right - left) / 2;
long long t = mid * mid;
if(t == x) return mid;
else if(t < x) left = mid + 1;
else right = mid - 1;
}
return right;
}
};