标签:sqrt
sqrt(x) : https://leetcode.com/problems/sqrtx/
Implement int sqrt(int x).
Compute and return the square root of x.
解析:
容易想到的是用二分法去试,但收敛速度太慢,不能满足时间要求。
我们知道求根公式,牛顿迭代法 点击查看维基百科
首先,选择一个接近函数
对于求a的m次方根。
以牛顿法来迭代:
(或
将本题中的
class Solution {
public:
int mySqrt(int x) {
if (x == 0 || x < 0)
return 0;
double root = x/2.0; // init
while (abs(root*root - x) > 0.1) {
root = 0.5*(root+x/root); // 牛顿迭代公式
}
return (int)root;
}
};
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:sqrt
原文地址:http://blog.csdn.net/quzhongxin/article/details/46944669