美文网首页
每周一道算法题(五十二)

每周一道算法题(五十二)

作者: CrazySteven | 来源:发表于2018-05-13 22:22 被阅读30次

上周题目难度Hard,就没做。本周题目难度'Easy',使用语言'Python'

题目:求一个数的平方根,精确到整数即可。

思路:追求简单的直接return int(math.sqrt(x))就行了,这里我们用牛顿迭代法来做。原则就是Xn与Xn+1的差值小于0.00001(不同的精度数值不一样)即可。Xn与Xn+1的关系是Xn+1 = Xn * 0.5 + X / (2 * Xn),知道这两条就很简单了。

class Solution:
    def mySqrt(self, x):
        """
        :type x: int
        :rtype: int
        """
        if (x <= 1): return x
        # 定义Xn与Xn+1
        x1 = 1
        x2 = x1 * 0.5 + x / (2 * x1)
        # 满足精度返回结果即可
        while(abs(x1 - x2) > 0.00001):
            x1 = x2
            x2 = x1 * 0.5 + x / (2 * x1)
        return int(x1)

效率尚可,这题还可以用二分法,泰勒展开等来做。

版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!

相关文章

  • 每周一道算法题(五十二)

    上周题目难度Hard,就没做。本周题目难度'Easy',使用语言'Python' 题目:求一个数的平方根,精确到整...

  • ARTS第三周(2018-12-16)

    1.Algorithm:每周至少做一个 leetcode 的算法题 第一道算法题:https://leetcode...

  • ARTS(09)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(05)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(07)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(10)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(02)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(03)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(08)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(06)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

网友评论

      本文标题:每周一道算法题(五十二)

      本文链接:https://www.haomeiwen.com/subject/rcsrdftx.html