五一来了,我就送大家一个快乐数(🐶)
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.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)