當前位置:首頁 > 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|中文字幕亚洲无线码