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