[LeetCode]69. Sqrt(x)
题目描述
思路
由于题目要求返回的是整数,简单实现的话可以使用二分
注意实现过程中的一些越界问题
代码
#include <iostream>
using namespace std;
class Solution {
public:
int mySqrt(int x) {
if (x == 1)
return 1;
int start = 0, end = x;
while (start < end) {
//越界点1 end + start 会越界
int mid = ((end - start) >> 1) + start;
//越界点2 mid * mid 会越界
if (mid == x / mid) return mid;
else if (start == mid || end == mid) return start;
else if (mid < x / mid) start = mid;
else end = mid;
}
return end;
}
};
int main() {
Solution s;
cout << s.mySqrt(2147395599) << endl;
system("pause");
return 0;
}
本文介绍了 LeetCode 上第 69 题 Sqrt(x) 的解决方案,采用二分查找法求解输入整数 x 的平方根。文章详细解析了算法的具体实现过程,并附带 C++ 代码示例,特别注意了实现过程中的越界问题。
821

被折叠的 条评论
为什么被折叠?



