/*通过二分法搜索。但是要注意两个数相乘可能会大于int能表示的最大值,
所以程序中采用long long型数据。*/
class Solution {
public:
int mySqrt(int x) {
if(x == 0) return 0;
long long left = 1, right = x;
while(left < right){
long long mid = (left + right) / 2;
if(mid * mid == x) return mid;
else if(mid * mid < x){
if((mid+1)*(mid+1) > x) return mid;
else left = mid + 1;
}
else{
if((mid-1)*(mid-1) < x) return mid-1;
else right = mid - 1;
}
}
}
};
LeetCode之Sqrt(x)
最新推荐文章于 2021-11-30 10:29:11 发布