import java.util.*;
public class Solution {
/**
*
* @param x int整型
* @return int整型
*/
public int mysqrt (int x) {
// write code here
//第一思路就是两两乘,二分找
//但是考虑到向下取整,应该再找一个数来记录最接近的平方值
if(x<=1){
return x;
}
int left=1;//下标从1开始
int right=x/2;//提升效率
int minMid=0;
while(left<=right){
int mid=left+(right-left)/2;
if(x/mid>mid){
left=mid+1;
minMid=mid;
}else if(x/mid<mid){
right=mid-1;
}else{
return mid;
}
}
//如果没有返回mid,说明没有完全符合的整数,我们就需要向下取整
return minMid;
}
}



京公网安备 11010502036488号