633. 平方数之和
633. 平方数之和
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 \(a^2 + b^2 = c\) 。
示例 1:
输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5
双指针
- 共判断两个数字
a和b,要求平方之和等于c。 - 首先定义范围,最大的数字为sqrt(c),最小的数字为0,假设a <= b,那么有:
- \(0 \leq a \leq b \leq \sqrt{c}\)。
- 左右指针分别指向左右,直至相等以后跳出循环。
class Solution {
public:
bool judgeSquareSum(int c) {
// 双指针
long i = 0, j = sqrt(c);
while(i <= j){
long cur = i*i + j*j;
if(cur == c)
return true;
else if(cur > c)
j--;
else
i++;
}
return false;
}
};

浙公网安备 33010602011771号