633. 平方数之和

169 阅读1分钟

题目描述

给定一个非负整数 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;
}