leetcode【简单】69、x的平方根

在这里插入图片描述

class Solution:
    def mySqrt(self, x: int) -> int:
        return self.find(0,x,x)
    
    def find(self,left,right,target):
        if target==0 or target==1:
            return target
        while left<right:
            mid = left + (right - left) // 2
            if mid*mid<=target and (mid+1)*(mid+1)>target:
                return mid
            elif (mid+1)*(mid+1)<=target:
                left=mid+1
            else:
                right=mid

补充:实现double_sqrt()函数
牛顿迭代法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution:
    def mySqrt(self, x: int) -> int:
        if x == 0:
            return 0
        
        C, x0 = float(x), float(x)
        while True:
            xi = 0.5 * (x0 + C / x0)
            if abs(x0 - xi) < 1e-7:
                break
            x0 = xi
        
        return x0

猜你喜欢

转载自blog.csdn.net/qq_40707462/article/details/112835755