无尽算法之 计算x的平方根 (二分法模拟 sqrt (int x) 函数)

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:

输入: 4
输出: 2
示例 2:

输入: 8
输出: 2

说明:

8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。

思路:

二分法搞定,注意要使用x/mid<mid 作为判定条件,不能使用mid*mid>x, 否则会整型溢出, 除非使用长整型。

题解:

class Solution {
    public int mySqrt(int x) {
        if(x==1){
            return 1;
        }
        int max = x;
        int min = 0;
        while(max-min>1){
            int mid=(max+min)/2;
            if(x/mid<mid){
                max=mid;
            }else{
                min=mid;
            }
        }
        return min;
    }
}
发布了152 篇原创文章 · 获赞 277 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_33709508/article/details/103971304