美文网首页
领扣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