美文网首页
领扣69:x 的平方根

领扣69:x 的平方根

作者: 领带衬有黄金 | 来源:发表于2020-07-27 10:09 被阅读0次

    题目描述

    实现 int sqrt(int x)函数。
    计算并返回 x 的平方根,其中 x 是非负整数。
    由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

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

    示例 2:
    输入: 8
    输出: 2

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

    解答思路

    1 采用数学知识

    算术平均数 >= 几何平均数

    def mySqrt(x):
        """
        :type x: int
        :rtype: int
        """
        if x <= 1:
            return x
        r = x
        while r > x / r:
            r = (r + x / r) // 2
        return int(r)
    

    2 采用二分法进行

    def mySqrt(x):
        if x <= 1:
            return x
        lo = 0
        hi = x // 2 + 1
        while lo < hi:
            mid = (lo + hi + 1) // 2
            if mid * mid > x:
                hi = mid - 1
            else:
                lo = mid
        return lo
    

    相关文章

      网友评论

          本文标题:领扣69:x 的平方根

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