LeetCode 解题

LeetCode 69. x 的平方根(Sqrt(x))

2019-04-18  本文已影响0人  leacoder
LeetCode.jpg

69. x 的平方根

实现 int sqrt(int x) 函数。

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

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

示例 1:

输入: 4
输出: 2
示例 2:

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

Python3实现

二分查找

# @author:leacoder 
# @des: 二分查找 , x 的平方根

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

牛顿迭代

# @author:leacoder 
# @des: 牛顿迭代 , x 的平方根
# 参看 https://www.cnblogs.com/qlky/p/7735145.html

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

神秘的常数 0x5f3759df 0x5f375a86

class Solution:
    def mySqrt(self, x: int) -> int: 
        if x <= 1:
            return x
        r = x
        r = 0x5f3759df - (r >> 1)
        while r * r > x:
            r = int((r + x / r) /2)
        return int(r)

GitHub链接:
https://github.com/lichangke/LeetCode
知乎个人首页:
https://www.zhihu.com/people/lichangke/
简书个人首页:
https://www.jianshu.com/u/3e95c7555dc7
个人Blog:
https://lichangke.github.io/
欢迎大家来一起交流学习

上一篇下一篇

猜你喜欢

热点阅读