LeetCode202 Happy Number

題目

Write an algorithm to determine if a number is “happy”.

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
快樂數的具體解釋參考這裏

解題思路

由上文的資料可得,不是快樂數的數稱爲不快樂數(unhappy number),所有不快樂數的數位平方和計算,最後都會進入 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循環中。
那麼,可以用hashset保存這些值,遇到直接返回false即可。

public boolean isHappy(int n) {
        if (n == 0) return false;
        if (n == 1) return true;
        int sum = 0;
        HashSet<Integer> set = new HashSet<>();
        set.add(4);
        set.add(16);
        set.add(37);
        set.add(58);
        set.add(89);
        set.add(145);
        set.add(42);
        set.add(20);
        while (n != 0) {
            sum += (n % 10) * (n % 10);
            n /= 10;
        }
        return !set.contains(sum) && isHappy(sum);
    }
發佈了40 篇原創文章 · 獲贊 10 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章