您的位置:首页 > 其它

【LeetCode 69】Sqrt(x)

2015-08-01 15:33 447 查看
Implement
int sqrt(int x)
.

Compute and return the square root of x.

思路:

  突然发现,二分真TM的是万能的。还有牛顿迭代法,数学的东西,头疼不想看了。还有传说中的“魔数”法,比math库效率都高,试了下RE - -。

C++:

class Solution {
public:
int mySqrt(int x) {

if(x < 0)
return 0;
if(x == 0 || x == 1)
return x;

unsigned long long beg = 0;
unsigned long long end = (x + 1) / 2;
unsigned long long mid = 0;
unsigned long long mids = 0;

while(beg < end)
{
mid = beg + (end - beg)/2;
mids = mid * mid;

if(mids == x)
{
return mid;
}
else if(mids > x)
{
end = mid - 1;
}
else
{
beg = mid + 1;
}
}

mids = end * end;
if(mids > x)
return end - 1;
else
return end;
}
};


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: