平方数之和
问题:
给定一个 非负整数 c ,你要判断是否存在两个整数 a 和 b,使得a^2 + b^2 == c
。
思路:
依次遍历 c^(1/2) 前的数,看 c - i ^ 2 再开根后的数是否为整数
是则存在,否则不存在
class Solution {
public:
bool judgeSquareSum(int const& c) const {
auto sc = sqrt(c); // 这里 sc 为 double 型
for(auto i = 0; i <= sc; ++i) {
auto d = sqrt(c - pow(i, 2)); // 这里 d 为 double 型
if(d == int(d)) return true; // 判断 d 是否带有小数部分
}
return false;
}
};
- 时间复杂度:O(n^(1/2))
- 空间复杂度:O(1)