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; } }