分析
-
本题的考点:数学。
-
我们枚举其中一个数据
i
,只需要枚举到$\sqrt c$即可,然后判断$c - i \times i$是不是平方数即可。
代码
- C++
class Solution {
public:
bool judgeSquareSum(int c) {
for (long long i = 0; i * i <= c; i++) {
int j = sqrt(c - i * i);
if (i * i + j * j == c)
return true;
}
return false;
}
};
- Java
class Solution {
public boolean judgeSquareSum(int c) {
for (long i = 0; i * i <= c; i++) {
int j = (int)Math.sqrt(c - i * i);
if (i * i + j * j == c)
return true;
}
return false;
}
}
时空复杂度分析
-
时间复杂度:$O(\sqrt n)$,
n
就是题目中的c
。 -
空间复杂度:$O(1)$。