Description
Example 1
Example 2
Solution 1(C++)
class Solution {
public:
bool judgeSquareSum(int c) {
for(int i=0;i<=sqrt(c);i++){
int j=c-i*i;
if(sqrt(j)==(int)sqrt(j)){
return true;
}
}
return false;
}
};
Solution 2(C++)
class Solution {
public:
bool judgeSquareSum(int c) {
for(int i=0;i<=sqrt(c);i++) {
int t=sqrt(c-i*i);
if(t*t==c-i*i) return true;
}
return false;
}
};
Solution 3(C++)
class Solution {
public:
bool judgeSquareSum(int c) {
int a = 0, b = sqrt(c);
while(a <= b){
if(a*a + b*b == c)return true;
else if(a*a + b*b > c)b--;
else a++;
}
return false;
}
};
算法分析
解法一与解法二是原理上是相同的。解法三也可以学习学习。
程序分析
略。