leetcode 69 x的平方根 ---python

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40155090/article/details/83827024

实现 int sqrt(int x) 函数。

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

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

示例 1:

输入: 4
输出: 2

示例 2:

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

1.二分法

class Solution:
    def mySqrt(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x == 0:
            return 0
        length = x
        start = 1
        while length >= start:
            mid = (length + start)//2
            if mid **2 <= x < (mid+1)**2:
                return mid
            elif mid**2 > x:
                length = mid
            else:
                start = mid
    while left <= right:
        mid = (left + right) // 2
        if x > mid * mid:
            left = mid + 1
            ans = mid
        elif x < mid*mid:
            right = mid -1
        else:
            return mid
    return ans

2.牛顿法--来自(牛顿法公式)

class Solution(object):
    def mySqrt(self, x):
        r = x
        while r*r > x:
            r = (r + x/r) / 2     #化简后的公式
        return r
 
扫描二维码关注公众号,回复: 3983371 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_40155090/article/details/83827024