二分查找3:69. x 的平方根
链接:69. x 的平方根 - 力扣(LeetCode)
题解:
本题本质是二分查找右端点
x的算数平方根一定在1 ~ x 区间内,在1 ~ x区间内查找一个数num,num^2=x,但实际上num不一定是整数,所以是num^2<=x。所以可以理解为所有满足num^2<=x的值都符合条件,但是要查找的是最右端点的值。
class Solution {
public:
int mySqrt(int x) {
if(x==0) return 0;
int left=1;
int right=x;
int mid=left+(right-left+1)/2;
while(left<right)
{
if((long long)mid*mid>x)
{
right=mid-1;
mid=left+(right-left+1)/2;
}
else
{
left=mid;
mid=left+(right-left+1)/2;
}
}
return mid;
}
};