[前端]_一起刷leetcode 633. 平方数之和

476 阅读1分钟

「这是我参与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

思路:

  1. 拿当前数开平方,向下取整,记为sqrt
  2. 0开始遍历到sqrt,用set记录每位数的平方记为cur
  3. 记录每位数的平方的同时判断 sqrt - cur的值是否存在,若存在说明存在
  4. 遍历结束,说明不存在

实现:

/**
 * @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;
};

看懂了的小伙伴可以点个关注、咱们下道题目见。如无意外以后文章都会以这种形式,有好的建议欢迎评论区留言。