题目描述
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。
示例
示例 1:
输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/su…
实现
bool judgeSquareSum(int c)
{
// 双指针,右指针为最大可能sqrt(c),左指针为0
long left = 0;
long right = (int)sqrt((double)c);
while (left <= right) {
if (left * left + right * right > c) {
right--;
} else if (left * left + right * right < c) {
left++;
} else {
return true;
}
}
return false;
}