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

实现 int sqrt(int x) 函数。

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

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

示例 1:

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

输入: 8
输出: 2

说明:

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

思路:

二分法搞定,注意要使用x/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;
    }
}

你可能感兴趣的:(无尽算法系列)