给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。

    示例 1:
    输入:c = 5
    输出:true
    解释:1 1 + 2 2 = 5
    示例 2:
    输入:c = 3
    输出:false

    1. /**
    2. * @param {number} c
    3. * @return {boolean}
    4. */
    5. var judgeSquareSum = function (c) {
    6. // a2 + b2 = c,可知a、b的取值范围为[0, sqrt(c)];
    7. let l = 0, r = Math.ceil(Math.sqrt(c));
    8. while (l <= r) {
    9. let cur = l * l + r * r;
    10. // 相等直接返回true
    11. if (cur === c) { return true; }
    12. // 当前值小于c,r--, 否则l++
    13. if (cur > c) { r -= 1; }
    14. else { l += 1; }
    15. }
    16. return false;
    17. };

    image.png