class Solution {
public intmySqrt(int x){//结果肯定在[1, 2... sqrt(x)]之间的 “最后一个”“小于等于” 给定值的元素int num =(int)Math.sqrt(x);//区间里元素的个数int len =0;for(int i =1; i <= num; i ++){
len ++;}int left =0, right = len -1;while(left <= right){int mid = left +(right - left)/2;// 不能写为:((mid+1)*(mid+1)) > x,防止溢出// mid作为下标索引,而元素是以1开始的if((mid +1)> x /(mid +1)){
right = mid -1;}elseif((mid +1)<= x /(mid +1)){//找最后一个 小于等于给定值的元素if(mid == len -1||(mid +2)> x /(mid +2)){return mid +1;}else{
left = mid +1;}}}//若输入0,则返回0return0;}}