欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

69. x 的平方根

程序员文章站 2024-03-20 17:36:16
...

问题描述

实现 int sqrt(int x) 函数。

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

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

示例 1:

输入: 4
输出: 2

示例 2:

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

解决方案

暴力解法

时间复杂度:O(N)

class Solution:
    def mySqrt(self, x):
        if x <= 1:
            return x
        s = 1
        while True:
            if s * s > x:
                return s - 1
            s += 1

二分查找

时间复杂度:O(log(N))

class Solution:
    def mySqrt(self, x):
        l = 1
        r = x
        while l <= r:
            m = (r + l) // 2
            if m * m > x:
                r = m - 1
            else:
                l = m + 1
        return r

牛顿法

时间复杂度:O(log(N))

class Solution:
    def mySqrt(self, x):
        a= x
        while a * a > x:
            a = (a + x // a) // 2
        return a