思路:
1.一个非负整数的算数平方根一定在 0 和它自身之间,所以可以使用二分法在区间里查找
2.大于等于 2 的算数平方根只保留整数部分都小于等于输入值的一半
3.不断查找并用中间值的平方和输入值比较来找到保留整数部分的算术平方根,即(x/mid<mid)
代码实现:
int mySqrt(int x){
int low=0;
int high=x;
int mid;
if(x<=1)
{
return x;
}
while(low+1<high)
{
mid=low+(high-low)/2;
if(x/mid<mid)
{
high=mid;
}
else
{
low=mid;
}
}
return low;
}
题目链接:https://leetcode-cn.com/problems/sqrtx/