题目描述:
给定一个非负整数 c
,你要判断是否存在两个整数 a
和 b
,使得 a2 + b2 = c。
示例1:
输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5
示例2:
输入: 3 输出: False
思路:
双指针问题,i指针从0开始增,j指针从c开根号数的位置减,依次计算i,j两数的平方和
- 若平方和小于非负整数c,则 i++
- 若平方和大于非负整数c,则 j--
- 相等则返回true
代码:
class Solution {
public boolean judgeSquareSum(int c) {
double sqrt = Math.sqrt(c);
int i = 0;
int j = (int) sqrt;
while (i <= j) {
int sum = i * i + j * j;
if (sum < c) {
i++;
} else if (sum > c) {
j--;
} else {
return true;
}
}
return false;
}
}