[Leetcode]69. Sqrt(x)解析@Python

题目:

Implement int sqrt(int x).

Compute and return the square root of x.

题意:

编码实现开方函数 sqrt。

注意:返回值、输入值是int。

1. 二分查找:

def mySqrt(self, x):
    l, r = 0, x
    while l <= r:
        mid = l + (r-l)//2
        if mid * mid <= x < (mid+1)*(mid+1):
            return mid
        elif x < mid * mid:
            r = mid
        else:
            l = mid + 1

2.看到讨论区的一个方法,不知所云,查了资料才发现用的是数学公式的推导(牛顿法)。

来自: StefanPochmann

class Solution(object):
    def mySqrt(self, x):
        r = x
        while r*r > x:
            r = (r + x/r) / 2     #化简后的公式
        return r

牛顿法公式:

x 2 = x 1 x 1 2 n 2 x 1

其中x1是上次计算结果,x2是本次计算结果。

如果觉得有用请点赞或评论一下~

猜你喜欢

转载自blog.csdn.net/u012884015/article/details/77619457