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 }

 

posted @ 2024-06-03 22:21  清川1  阅读(22)  评论(0)    收藏  举报