五一来了,我就送大家一个快乐数(🐶)
LeetCode 202: 快乐数
⭕️ 解题思路:
(1)此处采用哈希表来解决这个问题,准确来说是哈希集合 HashSet
- 那么HashSet 和 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.