题目描述:
实现
int sqrt(int x)
函数。计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
1
2
3 > 输入: 4
> 输出: 2
>
示例 2:
1
2
3
4
5 > 输入: 8
> 输出: 2
> 说明: 8 的平方根是 2.82842...,
> 由于返回类型是整数,小数部分将被舍去。
>
解题思路:
牛顿法求平方
一个数为x:
x1 = x / 2;
x2 = (x1 + x / x1) / 2;
x1 - x2 > 0.001
x3 = (x2 + x / x1) / 2;
x2 - x3 > 0.001时在循环
一直到 < 0.001结束时间复杂度: $O(n)$, 空间复杂度: $O(1)$.
1 | class Solution { |