【Java语言】力扣系列----69. x 的平方根

实现 int sqrt(int x) 函数。

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

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

示例 1:

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

输入: 8
输出: 2
说明: 8 的平方根是 2.82842…,
由于返回类型是整数,小数部分将被舍去。

具体代码实现如下:

class Solution {
    public int mySqrt(int x) {

        /*
        二分法思想,所求的数一定存在于[0, x]之间。
        */
        if(x < 2) return x;

        int left = 0;
        int right = x;
        int res = 0;

        while(left <= right){
            int mid = left + (right-left)/2;
            // 注意mid*mid可能超过int32的范围,故需要转换乘long型
            if((long)mid*mid <= x){
                left = mid + 1;
                res = mid;
            }else{
                right = mid - 1;
            }
        }

        return res;


/*
        // 调用库函数
        if(x < 2) return x;

        int res = (int)Math.exp(0.5 * Math.log(x));

        return (long)(res+1)*(res+1) <= x ? res+1 : res;
*/
    }
}

人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德

小白寄语:学如逆水行舟,不进则退。

你可能感兴趣的:(数据结构与算法基础,leetcode,Java程序)