2019-02-04

LeetCode 264. Ugly Number II.jpg

LeetCode 264. Ugly Number II

Description

Write a program to find the n-th ugly number.

Ugly numbers are positive numbers whose prime factors only include 2, 3, 5.

Example:

Input: n = 10
Output: 12
Explanation: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.
Note:

1 is typically treated as an ugly number.
n does not exceed 1690.

描述

編寫一個程序,找出第 n 個丑數(shù)阔加。

丑數(shù)就是只包含質(zhì)因數(shù) 2, 3, 5 的正整數(shù)。

示例:

輸入: n = 10
輸出: 12
解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個丑數(shù)。
說明:

1 是丑數(shù)尊惰。
n 不超過1690。

思路

  • 整型范圍內(nèi)(2^32)內(nèi)一共有1690個丑數(shù).
  • 根據(jù)丑數(shù)的定義膀捷,num = 2^i * 3^j * 5^k.假設(shè)當(dāng)前的丑數(shù)是n全庸,下一個丑數(shù)num1一定是n*2,下二個丑數(shù)num2一定是n*3挑豌,n*5,num1*2 三個數(shù)中較小的一個.
  • 丑數(shù)乘以2侯勉,或3铐拐,或5都是丑數(shù),并且當(dāng)前的丑數(shù)一定會被乘以2虚青,乘以3,乘以5來產(chǎn)生新的丑數(shù),只不過相乘所得到的結(jié)果并不是連續(xù)出現(xiàn)。比如當(dāng)前丑數(shù)是n宪赶,下一個丑數(shù)num1是n*2,再下一個丑數(shù)是num1*2辕棚,接下來才是n*3逝嚎。于是我們用i引几,j敞掘,k分別表示當(dāng)前丑數(shù)乘以2,3楣铁,5玖雁,并取所乘最小的丑數(shù)作為下一個丑數(shù),然后剛才被選中的丑數(shù)向后移動一個.
# -*- coding: utf-8 -*-
# @Author:             何睿
# @Create Date:        2019-02-04 13:35:56
# @Last Modified by:   何睿
# @Last Modified time: 2019-02-04 14:25:45


class Solution:
    def nthUglyNumber(self, n):
        """
        :type n: int
        :rtype: int
        """
        uglynum = [1]
        # i:2的次數(shù)盖腕,j:3的次數(shù)赫冬,k:5的次數(shù),count:丑數(shù)的個數(shù)
        # i表示當(dāng)前位置的丑數(shù)乘以2
        # j表示當(dāng)前位置的丑數(shù)乘以3
        # k表示當(dāng)前位置的丑數(shù)乘以5

        i, j, k, count = 0, 0, 0, 1
        while count < n:
            # 我們以對應(yīng)的上一個數(shù)為基底溃列,分別對應(yīng)乘上2劲厌,3,5哭廉,
            # 新的丑數(shù)一定是i脊僚,j,k位置的丑數(shù)對應(yīng)乘以2遵绰,3辽幌,5中的最小數(shù)
            uglyi, uglyj, uglyk = uglynum[i] * 2, uglynum[j] * 3, uglynum[k] * 5
            # 然后我們選擇最小的數(shù)
            uglynext = min(uglyi, uglyj, uglyk)
            # 如果uglynext == uglyi,說明當(dāng)前位置的丑數(shù)乘以2得到新的丑數(shù)
            # i自增一次表示用下一個數(shù)乘以2產(chǎn)生新的丑數(shù)
            if uglynext == uglyi: i += 1
            # 如果uglynext == uglyj椿访,說明當(dāng)前位置的丑數(shù)乘以3得到新的丑數(shù)
            # j自增一次表示用下一個數(shù)乘以3產(chǎn)生新的丑數(shù)
            if uglynext == uglyj: j += 1
            # 如果uglynext == uglyk乌企,說明當(dāng)前位置的丑數(shù)乘以5得到新的丑數(shù)
            # k自增一次表示用下一個數(shù)乘以5產(chǎn)生新的丑數(shù)
            if uglynext == uglyk: k += 1
            uglynum.append(uglynext)
            count += 1
        # 返回最后一個數(shù)字
        return uglynum[-1]

源代碼文件在這里.
?本文首發(fā)于何睿的博客,歡迎轉(zhuǎn)載成玫,轉(zhuǎn)載需保留文章來源加酵,作者信息和本聲明.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市哭当,隨后出現(xiàn)的幾起案子猪腕,更是在濱河造成了極大的恐慌,老刑警劉巖钦勘,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陋葡,死亡現(xiàn)場離奇詭異,居然都是意外死亡彻采,警方通過查閱死者的電腦和手機(jī)腐缤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肛响,“玉大人岭粤,你說我怎么就攤上這事√厮瘢” “怎么了剃浇?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我偿渡,道長臼寄,這世上最難降的妖魔是什么霸奕? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任溜宽,我火速辦了婚禮,結(jié)果婚禮上质帅,老公的妹妹穿的比我還像新娘适揉。我一直安慰自己,他們只是感情好煤惩,可當(dāng)我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布嫉嘀。 她就那樣靜靜地躺著,像睡著了一般魄揉。 火紅的嫁衣襯著肌膚如雪剪侮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天洛退,我揣著相機(jī)與錄音瓣俯,去河邊找鬼。 笑死兵怯,一個胖子當(dāng)著我的面吹牛彩匕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播媒区,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼驼仪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了袜漩?” 一聲冷哼從身側(cè)響起绪爸,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宙攻,沒想到半個月后奠货,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡粘优,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年仇味,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雹顺。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡丹墨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嬉愧,到底是詐尸還是另有隱情贩挣,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站王财,受9級特大地震影響卵迂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绒净,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一见咒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挂疆,春花似錦改览、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胆萧,卻和暖如春庆揩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背跌穗。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工订晌, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瞻离。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓腾仅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親套利。 傳聞我的和親對象是個殘疾皇子推励,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,654評論 2 354

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

  • LeetCode 263. Ugly Number Description Write a program to ...
    ruicore閱讀 108評論 0 0
  • 今天是什么日子 起床:4點30分 今天早起有過一絲的猶豫,也許是沒睡好造成的肉迫,有一點不想起來验辞,當(dāng)時想要是手機(jī)就在床...
    坤道率然閱讀 348評論 1 1
  • 今早聽了樊老師的《父母的語言》這本書,收益頗多喊衫。作 者 是[美]達(dá)娜·薩斯德 (Dana Suskind)芝加哥大...
    王琴wq70閱讀 1,008評論 2 3
  • 通過計劃把未來變成現(xiàn)在跌造,這樣你就可以未雨綢繆。 ...
    葉亦唯閱讀 573評論 0 1
  • 啊族购,孤莽浩蕩的北風(fēng)之神啊 請在這里壳贪,靜靜聆聽我的祈禱 : 愿你精致到老 眼里長著太陽 笑里全是坦蕩 風(fēng)里刮盡的全是...
    李夢生閱讀 134評論 0 3