LintCode-488.快樂數(shù)

題目

描述

寫一個算法來判斷一個數(shù)是不是"快樂數(shù)"。

一個數(shù)是不是快樂是這么定義的:對于一個正整數(shù),每一次將該數(shù)替換為他每個位置上的數(shù)字的平方和,然后重復(fù)這個過程直到這個數(shù)變?yōu)?,或是無限循環(huán)但始終變不到1。如果可以變?yōu)?,那么這個數(shù)就是快樂數(shù)。

樣例

19 就是一個快樂數(shù)。

1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

解答

思路

  1. 計(jì)算過程中的數(shù)字都存在Set中,如果后續(xù)計(jì)算出現(xiàn)了Set中的數(shù),說明陷入循環(huán),那么該Set中的所有數(shù)都應(yīng)該不是快樂數(shù),當(dāng)然也包括輸入的數(shù),返回false;
  2. 直到計(jì)算出1,返回true;

代碼

public class Solution {
    /**
     * @param n an integer
     * @return true if this is a happy number or false
     */
    public boolean isHappy(int n) {
        // Write your code here
        Set<Integer> set = new HashSet<>();
        int temp = 0;
        Integer nn = new Integer(n);
        while(nn != 1){
            if(set.contains(nn)) return false;
            set.add(nn);
            temp = nn;
            nn = 0;
            while(temp != 0){
                nn += (temp%10)*(temp%10);
                temp = temp / 10;
            }
        }
        return true;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個人學(xué)習(xí)批處理的初衷來源于實(shí)際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,983評論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,697評論 18 399
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,921評論 0 33
  • 靳(jin)云鵬是段琪瑞手下“四大金剛”之一,曾擔(dān)任陸軍部長兼國務(wù)總理。MicrosoftInternetExpl...
    Pengkof閱讀 995評論 0 2

友情鏈接更多精彩內(nèi)容