LeetCode-69.x的平方根

实现 int sqrt(int x) 函数。

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

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

class Solution:
    def mySqrt(self, x: int) -> int:
        return int(sqrt(x))

怎么说呢,题目明显不是这个意思

下面用二分法来求解

class Solution:
    def mySqrt(self, x: int) -> int:
        if x == 1: return x
        # 例外情况1单独判断
        L, R = 0, x
        while L <= R:
            mid = (L + R) / 2.0
            if abs(mid * mid - x) < 0.01:    # 在误差范围内,return
                return int(mid)    # 保留k位小数,这里是四舍五入
            elif mid * mid > x:      # 中间点都偏大,右边界R=mid
                R = mid
            else:                    # 中间点都偏小,左边界L=mid
                L = mid

posted @ 2021-08-15 19:37  小Aer  阅读(2)  评论(0编辑  收藏  举报  来源