import java.util.*;
import java.util.*;
public class Solution {
public int mysqrt (int x) {
// 预处理
if (x == 0) return 0;
if (x == 1) return 1;
// 初始化
int left = 1; // 左边界
int right = x; // 右边界
// 二分查找
int mid = -1;
while (true) {
// 获取中间位置
mid = left + (right -left )/2;
// 判断是否命中
if (mid <= x/mid && x/(mid+1) < (mid+1)) {
return mid;
}
// 未命中则调整区间值
if (mid > x/mid) { // mid过大
right = mid -1;
} else { // mid过小
left = mid + 1;
}
}
}
}



京公网安备 11010502036488号