• 當前位置:首頁 > IT技術 > 其他 > 正文

    leetcode202:快樂數
    2022-09-06 22:56:08

    package com.mxnet;
    
    import java.util.HashSet;
    
    public class Solution202 {
    
        public static void main(String[] args) {
    
        }
    
        /**
         * 編寫一個算法來判斷一個數 n 是不是快樂數。
         *
         * 「快樂數」?定義為:
         * 對于一個正整數,每一次將該數替換為它每個位置上的數字的平方和。
         * 然后重復這個過程直到這個數變為 1,也可能是 無限循環 但始終變不到 1。
         * 如果這個過程 結果為?1,那么這個數就是快樂數。
         * 如果 n 是 快樂數 就返回 true ;不是,則返回 false 。
         * @param n
         * @return
         * 思路:
         * 1. 使用hash結構判斷在生成下一個數的時候是否出現循環
         * 2. 首先使用一個函數計算改數的每個位置的平方和
         * 3. 在循環生成下一個數的時候判斷是否出現循環
         * 4. 若出現 則停止,并判斷是否滿足快樂數定義
         * 5. 若未出現,則一直循環生成生成
         * 6. 循環結束時判斷是否滿足條件
         */
        public boolean isHappy(int n) {
            HashSet<Integer> integers = new HashSet<>();
            while (n != 1 && !integers.contains(n)){
                integers.add(n);
                n = getNext(n);
            }
            return n == 1;
        }
    
        /**
         * 給定一個數字n 計算對各位數求平方和的值
         * @param n
         * @return
         */
        public int getNext(int n){
            int total = 0;
            while (n > 0){
                int d = n % 10;
                total += d * d;
                n = n / 10;
            }
            return total;
        }
    }

    本文摘自 :https://www.cnblogs.com/

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码