leetcode day1:x 的平方根
袖珍计算器算法
「袖珍计算器算法」是一种用指数函数
e
x
p
exp
exp 和对数函数
l
n
ln
ln代替平方根函数的方法。通过有限的可以使用的数学函数,得到我们想要计算的结果。公式如下:
x
=
x
1
/
2
=
(
e
l
n
x
)
1
/
2
=
e
1
/
2
l
n
x
\sqrt{x} = x^{1/2}=(e^{lnx})^{1/2}=e^{1/2lnx}
x=x1/2=(elnx)1/2=e1/2lnx
注意:计算机无法存储浮点数的精确值,指数函数和对数函数的参数和返回值均为浮点数,因此运算过程中会存在误差。
class Solution:
def mySqrt(self, x: int) -> int:
if x == 0:
return 0
ans = int(math.exp(0.5 * math.log(x)))
return ans + 1 if (ans + 1) ** 2 <= x else ans