题目:给定一个非负整数 c
,你要判断是否存在两个整数 a
和 b
,使得 a2 + b2 = c。
思路:使用双指针法,最小为0,最大为输入数的平方根,判断当前两个指针是否满足要求。
示例1:
输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5
示例2:
输入: 3 输出: False
C++代码实现:
class Solution {
public:
bool judgeSquareSum(int c) {
for(int i=0,j=sqrt(c);i<=j;){
int tmp=i*i+j*j;
if(tmp<c){
i++;
continue;
}if(tmp>c){
j--;
continue;
}
if(tmp==c){
return true;
}
}
return false;
}
};