链接: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;}
};