實現 int sqrt(int N) 函數,計算並返回 N 的平方根。
樣例
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3
挑戰
O(log(x))
solution: 如果使用蠻力法來求解的話,肯定是會超時的。因此,我們需要使用牛頓迭代法來求解這問題
牛頓迭代法: 對於給定一個函數f(x) = 0,的解爲
當
在本題中取
化簡得:
code :
class Solution {
public:
/**
* @param x: An integer
* @return: The sqrt of x
*/
int sqrt(int x) {
double i = 1, j;
do {
j = (i + x / i) * 0.5;
if (abs(j -i) < 1)
return (int) j;
i = j;
} while (1);
return 1;
}
};