快乐数
- LeetCode题目链接
- 卡尔老师代码随想录讲解
- 关键点: 如果这个数不是快乐数,那么算出来的结果值必定会重复出现,而快速判断元素是否出现过我们可以使用哈希表存储每次算出来的结果值。
- 代码:
var isHappy = function(n) {
let sumSet = new Set()
while(1){
let sum = 0
while(n){
sum = sum + Math.pow(n%10,2)
n = Math.floor(n / 10)
}
if(sum == 1) return true
if(sumSet.has(sum)) return false
sumSet.add(sum)
n = sum
}
};
- 注意:
无 - 复杂度分析:
时间:时间复杂度为set哈希表查找元素的时间,O( n n n)
空间:O( 1 1 1)