您的位置:首页 > 编程语言 > C语言/C++

LeetCode 69. Sqrt(x)

2014-07-12 07:17 357 查看
解法一:二分

注意到参数及返回值为int, 我们需要用long long保存中间结果,防止int*int的溢出。

代码:

class Solution
{
public:
int sqrt(int x)
{
long long l=1, r=x, mid=x;

while (l <= r)
{
mid = (l+r) >> 1;
if (mid*mid == x)
{
return mid;
} else if (mid*mid < x)
{
l = mid + 1;
} else
{
r = mid - 1;
}
}

return mid*mid>x? mid-1:mid;
}
};

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