1. 题目
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sqrtx
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 题解
可以看成求取 f ( y ) = y 2 − x f(y) = y^2 - x f(y)=y2−x,求取该方程为0时的解 y y y。
求解方程的解有两种方法,一种是泰勒展开,一种是二分法。
class Solution:
def mySqrt(self, x: int) -> int:
x_k = 1
while True:
x_k2 = x_k - (x_k**2-x)/(2.0*x_k)
if abs(x_k2-x_k)<0.5:
break
x_k = x_k2
return int(x_k2)
参考: