-
题目描述
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得。
-
思路
双指针。一个指向0,一个指向,然后判断两个指针指向位置的平方和与c的大小,如果大于c值一定较大指针并行更小的数,否则移动较小指针指向更大的数。
-
C++实现
class Solution {
public:
// 双指针
bool judgeSquareSum(int c) {
int i = 0, j = (int)sqrt(c);
while(i<=j){
int diff = c - i*i; // 防止溢出,使用减法
if(diff>j*j){
i++;
}else if(diff<j*j){
j--;
}else
return true;
}
return false;
}
};