C语言代码(20240125)

阅读 7

2024-10-10

题目描述

题解

采用二分法解决

class Solution {
    public int mySqrt(int x) {
     long left=0;
     long right=x/2;//平方根一定比÷2要小
     while(left<=right){
        long mid=left+(right-left)/2;//防止溢出,就是找中点
        long sqr=mid*mid;
        long sqrnext=(mid+1)*(mid+1);
        if(sqr==x||(sqr<x&&sqrnext>x)){
            return(int) mid;
        }
        else if(sqr<x){
            left=mid+1;
        }
        else{
            right=mid-1;
        }
     }
     return x;
    }
}

 

精彩评论(0)

0 0 举报