您的位置:首页 > 其它

x的平方根

2015-12-14 19:29 197 查看
实现
int sqrt(int x)
函数,计算并返回 x 的平方根。

您在真实的面试中是否遇到过这个题?

Yes

样例

sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3

挑战

O(log(x))

****************************************
考虑为Integer.MAX_VALUE最大值的情况
class Solution {
/**
* @param x: An integer
* @return: The sqrt of x
*/
public int sqrt(int x) {
// write your code here
if(x == 0 || x == 1)
return x;
if(x >= 46340 * 46340)
return 46340;
int i=0;
for(i=0;i<=x/2;i++)
{
if(i*i > x)
{
i--;
break;
}
else if(i * i == x)
break;
}
return i;
}
}


复杂度O(log(x))
int sqrt(int x) {
long long i = 0;
long long j = x / 2 + 1;
while (i <= j)
{
long long mid = (i + j) / 2;
long long sq = mid * mid;
if (sq == x) return mid;
else if (sq < x) i = mid + 1;
else j = mid - 1;
}
return j;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: