69.x的平方分根 发表于 2019-05-07 更新于 2021-07-29 分类于 算法学习 , leetcode 题目 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 12输入: 4输出: 2 示例 2: 1234输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。 思路 这道题看似简单,但是非常有意思,普通解法可以使用二分法来进行计算,但是这里使用一个更好用的解法:牛顿迭代法,通过逼近斜率来得到方程的解. 代码 12345678910111213public int MySqrt(int x){ if (x <= 1) { return x; } double r = x; for (int i = 0; i < 20; i++)//迭代次数,次数越多越精确. { r = (r + x / r) / 2;//牛顿迭代法的关键,建议直接背下来. } return (int)r;}