五一来了,我就送大家一个快乐数(🐶)
LeetCode 202: 快乐数
?? 解题思路: (1)此处采用哈希表来解决这个问题,准确来说是哈希集合 HashSet
- 那么HashSet 和 HashMap有什么区别呢?
HashMap是一个散列桶(数组和链表),它存储的内容是键值对映射[key-value] HashMap实现了Map接口,利用put()方法添加键值对
HashSet 是通过HashMap来实现的,它存储的内容是Key对象 HashSet 实现了Set接口,利用add()方法将元素添加到Set中,速度没有HashMap快
(2)创建一个HashSet,用来存储数据 (3)设置一个单独的方法,根据当前的数计算下一个数 (4)通过while循环不断计算,如果当前数不为1并且没有在集合中出现过,就将这个元素添加到集合中,然后将当前这个数作为参数传入到计算下一个值的方法中,利用返回值来更新n (5)最后返回n == 1 ,如果n为1就会返回true,如果n不为1就会返回false。 📖 代码部分:
class Solution {
public static int getNextNumber(int n){
int res = 0;
while(n != 0){
int temp = n % 10;
res += temp * temp;
n = n / 10;
}
return res;
}
public boolean isHappy(int n) {
Set<Integer> record = new HashSet<>();
while(n != 1 && !record.contains(n)){
record.add(n);
n = getNextNumber(n);
}
return n == 1;
}
}
?? 祝愿大家每天都能有一个好心情,代码没bug,永远没有404.
|