Leetcode No.202快樂數(shù)

題目大意

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

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

輸入: 19
輸出: true
解釋:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

思路

如果不是快樂數(shù)晶疼,所得的數(shù)字會出現(xiàn)循環(huán)翠霍。第一個方法是用HashMap存儲已經(jīng)出現(xiàn)過的數(shù)字零如,這樣可以方便地找到循環(huán)。第二個方法是利用快慢指針完成一輪循環(huán)辕翰。

代碼一:HashMap

private int count(int n) {
        int res = 0;
        while(n>0) 
        {
            res+= (n%10) * (n%10);
            n/=10;
        }
        return res;
    }
public boolean isHappy(int n) {
        //<結(jié)果,原數(shù)>
        boolean flag = false;
        HashMap<Integer,Integer> map = new HashMap<>();
        while(!flag) {
            int res = count(n);
            if(res == 1) return true;
            if(map.containsKey(res)) return false;
            else
            {
                map.put(res,n);
                n = res;
            }
        }
        return flag;
    }

運行時間5ms壁榕,擊敗67.31%赎瞎。

代碼二:快慢指針

循環(huán)問題牌里,快指針一次走兩步,慢指針一次一步务甥, 達到一輪循環(huán)敞临。注意快指針的起點要比慢指針前态辛。

private int count(int n) {
        int res = 0;
        while(n>0) 
        {
            res+= (n%10) * (n%10);
            n/=10;
        }
        return res;
    }

     public boolean isHappy(int n) {
        int fast = count(n), slow = n;
        while(fast!=slow) {
            slow = count(slow);
            fast = count(fast);
            fast = count(fast);
        }
        return slow == 1;
     }

運行時間2ms奏黑,99.12%熟史。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怒详,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缎岗,更是在濱河造成了極大的恐慌鼠渺,老刑警劉巖恬口,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钞螟,死亡現(xiàn)場離奇詭異谎碍,居然都是意外死亡鳞滨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門椿浓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來太援,“玉大人,你說我怎么就攤上這事扳碍√岵恚” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵笋敞,是天一觀的道長碱蒙。 經(jīng)常有香客問我,道長夯巷,這世上最難降的妖魔是什么赛惩? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮趁餐,結(jié)果婚禮上喷兼,老公的妹妹穿的比我還像新娘。我一直安慰自己后雷,他們只是感情好季惯,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著臀突,像睡著了一般勉抓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上候学,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天藕筋,我揣著相機與錄音,去河邊找鬼梳码。 笑死隐圾,一個胖子當著我的面吹牛伍掀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翎承,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼硕盹,長吁一口氣:“原來是場噩夢啊……” “哼符匾!你這毒婦竟也來了叨咖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤啊胶,失蹤者是張志新(化名)和其女友劉穎甸各,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焰坪,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡趣倾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了某饰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儒恋。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖黔漂,靈堂內(nèi)的尸體忽然破棺而出诫尽,到底是詐尸還是另有隱情,我是刑警寧澤炬守,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布牧嫉,位于F島的核電站,受9級特大地震影響减途,放射性物質(zhì)發(fā)生泄漏酣藻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一鳍置、第九天 我趴在偏房一處隱蔽的房頂上張望辽剧。 院中可真熱鬧,春花似錦税产、人聲如沸怕轿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撤卢。三九已至,卻和暖如春梧兼,著一層夾襖步出監(jiān)牢的瞬間放吩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工羽杰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渡紫,地道東北人到推。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像惕澎,于是被迫代替她去往敵國和親莉测。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容