每周一道算法题(五十二)
上周题目难度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 原创出品,欢迎转载,转载时请注明出处!
推荐阅读
- 画解算法(1.|画解算法:1. 两数之和)
- Guava|Guava RateLimiter与限流算法
- 一个选择排序算法
- SG平滑轨迹算法的原理和实现
- 《算法》-图[有向图]
- 九月计划
- 你是否也是一道风景()
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- 虚拟DOM-Diff算法详解
- 《数据结构与算法之美》——队列