题目链接:https://leetcode-cn.com/problems/sqrtx/
题目如下:
class Solution {
public:
int mySqrt(int x) {
//y^2<=x (y>=0) ,由于y的平方是单调递增的,故可用二分法
int low=0,high=x,mid;
while(low<high){
//注:>>1 等同于 /2
//1ll为1 long long
//由于low=mid;故此,low+high+1
mid=(low+1ll+high)/2;//目标:让括号里算出的值变成longlong类型,除以2仍为int类型且不超限
if(mid<=x/mid)//为防止超出类型的最大值,原来为mid*mid<=x
low=mid;
else high=mid-1;
}
return high;
}
};