实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
暴力法:
class Solution {
public:
int mySqrt(int x) {
for(int i = 0;;i++)
{
if(i * i <= x && (long long)(i + 1) * (long long)(i + 1) > x)
return i;
}
return 0;
}
};
二分法:
class Solution {
public:
int mySqrt(int x) {
if(x <= 1)
return x;
int low = 0;
int high = x / 2 + 1;
while(low <= high)
{
int mid = (low + high) / 2;
if(x / mid == mid)
return mid;
else if(x / mid > mid)
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
return high;
}
};
牛顿迭代法:
见博客:
http://www.cnblogs.com/AnnieKim/archive/2013/04/18/3028607.html