Q4 LeetCode69 x的平方根
1.使用二分法进行查找
2.left=0,right=x,mid*mid与x进行判断
3.long类型是因为mid可能很大,会超出int的范围,造成时间复杂度大
4.与二分查找不同的是每次当mid*mid<=x时都要刷新ans的取值,因为此题最后取的小于近似值
1 class Solution { 2 public static int mySqrt(int x) { 3 //返回算数平方根,二分查找返回mid 4 //left=0,right=x*x 5 6 int left=0,right=x; 7 int ans=-1; 8 int mid=0; 9 while(left<=right){ 10 mid=(left+right)/2; 11 if((long)mid*mid>x){ 12 right=mid-1; 13 } 14 else { 15 left=mid+1; 16 ans=mid; 17 } 18 19 } 20 return ans; 21 } 22 }

浙公网安备 33010602011771号