Orion's Studio.

算法(18)-快乐数

2024/03/11

题目(easy)

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

思路

判断一个元素是否出现过用哈希法。

当一个 sum 重复出现过,就说明要 return false 了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const isHappy = (n) => {
const set = new Set();
let totalCount;
while(totalCount !== 1) {
let arr = ('' + (totalCount || n)).split('');
totalCount = arr.reduce((total, num) => {
return total + num * num;
}, 0);
if (set.has(totalCount)) {
return false;
}
set.add(totalCount);
}
return true;
}

时间复杂度: O(logn)。
空间复杂度: O(logn)。

CATALOG
  1. 1. 题目(easy)
  2. 2. 思路