原题链接:Leetcode 69. x 的平方根
class Solution {
public:
int mySqrt(int x) {
int l=0,r=x,res=1;
while(l<=r)
{
int mid = l + (r - l) / 2;
if ((long long) mid * mid <= x) l=mid+1;
else r=mid-1;
}
return r;
}
};
2024:
class Solution {
public:
int mySqrt(int x) {
if (x == 0)
return 0;
int l = 1, r = x;
while (l <= r) {
long long mid = l + (r - l) / 2;
if (mid * mid == x ||
(mid * mid < x && (mid + 1) * (mid + 1) > x)) {
return mid;
} else if (mid * mid > x) {
r = mid - 1;
} else if (mid * mid < x) {
l = mid + 1;
}
}
return -1;
}
};