题目:
Implement int sqrt(int x).
Compute and return the square root of x.
题意:
编码实现开方函数 sqrt。
注意:返回值、输入值都是int。
1. 二分查找:
def mySqrt(self, x):
l, r = 0, x
while l <= r:
mid = l + (r-l)//2
if mid * mid <= x < (mid+1)*(mid+1):
return mid
elif x < mid * mid:
r = mid
else:
l = mid + 1
2.看到讨论区的一个方法,不知所云,查了资料才发现用的是数学公式的推导(牛顿法)。
来自: StefanPochmann
class Solution(object):
def mySqrt(self, x):
r = x
while r*r > x:
r = (r + x/r) / 2 #化简后的公式
return r
牛顿法公式:
其中x1是上次计算结果,x2是本次计算结果。