美文网首页
Leetcode 69.x 的平方根 (java)

Leetcode 69.x 的平方根 (java)

作者: SenwinFeng | 来源:发表于2018-10-17 10:41 被阅读0次

    题目:

    实现int sqrt(int x)函数。

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

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

    示例 1:

    输入:4

    输出:2

    示例 2:

    输入:8

    输出:2

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

    思路:

    典型的二分法

    代码:

    解法一

    public int mySqrt(int x) {
        if(x <= 1)
            return x;
        int left = 1,right = x;
        while(left <= right){
            int mid = left + (right -left) / 2;
            int sqrt = x / mid;
            if(sqrt == mid)
                return mid;
            else if(sqrt < mid)
                right = mid - 1;
            else
                left = mid + 1;
        }
        return right;
    }
    

    解法二:

    public int mySqrt(int x) {
       long r = x;
    while (r*r > x)
        r = (r + x / r) / 2;
    return (int) r; 
    }
    

    相关文章

      网友评论

          本文标题:Leetcode 69.x 的平方根 (java)

          本文链接:https://www.haomeiwen.com/subject/thulzftx.html