1. 程式人生 > >leetcode (Happy Number)

leetcode (Happy Number)

Title:Happy Number    202

Difficulty:Easy

原題leetcode地址:   https://leetcode.com/problems/happy-number/

 

1.  見程式碼註釋

時間複雜度:O(n),一次一層for迴圈。

空間複雜度:O(n),申請Set空間。

    /**
     * 如果最後不為1,最後會收斂某個數,用Set的唯一性存放這個數
     * @param n
     * @return
     */
    public static boolean isHappy(int n) {

        if (n < 1) {
            return false;
        }

        Set<Integer> set = new HashSet<>();

        while (n != 0 && !set.contains(n)) {
            set.add(n);

            String s = n + "";
            char nums[] = s.toCharArray();

            int total = 0;
            for (int num : nums) {
                int i = num - 48;
                total += i * i;
            }

            n = total;

        }

        return n == 1;

    }