202. 快乐数

哈希表

import java.util.HashSet;

class Solution {
    public boolean isHappy(int n) {

        /**
         * 如果会无限循环,说明结果会重复出现,判断元素是否重复出现,可以用Set集合构建哈希表
         */
        HashSet<Integer> set = new HashSet<>();

        while (n != 1){

            int sum = 0;

            while (n / 10 != 0 || n % 10 != 0){

                sum += (n % 10) * (n % 10);
                n = n / 10;
            }

            if (set.contains(sum)){
                return false;
            }
            else {

                set.add(sum);
                n = sum;
            }
        }

        return true;
    }
}

/**
 * 时间复杂度 O(logn)
 * 空间复杂度 O(logn)
 */

https://leetcode-cn.com/problems/happy-number/

posted @ 2021-12-01 14:31  振袖秋枫问红叶  阅读(34)  评论(0)    收藏  举报