题目链接:
力扣https://leetcode-cn.com/problems/sqrtx/
【分析】通过二分查找,判定条件为mid*mid<=target的最大值,因此是upperBound的right,缩短左区间的条件为x<mid * mid
class Solution {
public int binarySearch(int x){
long left = 0, right = x, mid, tmp;
while(left <= right){
mid = (left + right) >>> 1;
if(x < mid * mid){
right = mid - 1;
}else{
left = mid + 1;
}
}
return (int)right;
}
public int mySqrt(int x) {
return binarySearch(x);
}
}