题目大意:求出所给非负数的平方根,如果平方根不是整数,则返回值只截取整数部分
分析:数学考察+二分搜索。
代码:注意不要用int,否则mid*mid可能会溢出
class Solution {
public:
int mySqrt(int x) {
int l = 0,r = x;
long long mid;
while(l <= r){
mid = (l + r) / 2;
if(mid * mid == x) return (int)mid;
else if(mid * mid > x) r = mid - 1;
else l = mid + 1;
}
return r;
}
};