题目链接:点击这里
求 ,转换为求 使得
与 单调、正相关,所以,考虑在 范围内二分找到一个 使得
数据会爆掉int
class Solution {
public:
//当前的mid小于等于时返回true,当前的mid大于时返回false
int check(long long mid, long long x) {
return mid*mid <= x;
}
int mySqrt(int x) {
long long L = 0, R = x, mid, ans; //[L,R]
while(L<=R)
{
long long mid = L+(R-L)/2;
if(check(mid,x))
{
ans = mid;
L = mid + 1;
}
else
R = mid - 1;
}
return ans;
}
};