「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
题目:
633. 平方数之和
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。
示例 1:
输入: c = 5
输出: true
解释: 1 * 1 + 2 * 2 = 5
示例 2:
输入: c = 3
输出: false
示例 3:
输入: c = 4
输出: true
示例 4:
输入: c = 2
输出: true
示例 5:
输入: c = 1
输出: true
提示:
0 <= c <= 231 - 1
思路:
- 拿当前数开平方,向下取整,记为
sqrt - 从
0开始遍历到sqrt,用set记录每位数的平方记为cur - 记录每位数的平方的同时判断
sqrt - cur的值是否存在,若存在说明存在 - 遍历结束,说明不存在
实现:
/**
* @param {number} c
* @return {boolean}
*/
var judgeSquareSum = function (c) {
let sqrt = Math.floor(Math.sqrt(c));
let set = new Set();
for (let i = 0; i <= sqrt; i++) {
let cur = c - i * i;
set.add(i * i);
if (set.has(cur)) {
return true;
}
}
return false;
};
看懂了的小伙伴可以点个关注、咱们下道题目见。如无意外以后文章都会以这种形式,有好的建议欢迎评论区留言。