2021 年 04 月 28 日 链接:https://leetcode-cn.com/problems/sum-of-square-numbers/
题目
描述
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。
示例
示例 1:
- 输入:c = 5
- 输出:true
-
示例 2:
输入:c = 3
-
示例 3:
输入:c = 4
-
示例 4:
输入:c = 2
-
示例 5:
输入:c = 1
-
提示
-
解答
思路
先有式子
x^2 + y^2= c- 从而可以设置循环,x 从 0 开始递增,y 从小于 c 的平方根的最大整数开始递减
x = 0、y = floor(sqrt(c))- 当
left > right停止循环,说明不存在 - 当
c - left^2 === right^2返回 true 终止循环,说明值存在代码
/*** @param {number} c* @return {boolean}*/var judgeSquareSum = function(c) {let left = 0let right = Math.floor(Math.sqrt(c))while(left <= right){if(c - left ** 2 > right ** 2){left ++}else if(c - left ** 2 < right ** 2){right --}else{return true}}return false};
