五一当然要快乐啊

五一当然要快乐啊,第1张

五一来了,我就送大家一个快乐数(🐶)

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.

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/790264.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存