LeetCode|劍指 Offer 49.醜數

xiao黃發表於2020-10-11

LeetCode習題答案彙總

題目:
我們把只包含質因子 2、3 和 5 的數稱作醜數(Ugly Number)。求按從小到大的順序的第 n 個醜數。

示例:

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

1 是醜數。
n 不超過1690。

分析:

程式碼:

class Solution:
    def nthUglyNumber(self, n: int) -> int:
        dp = [1] * n
        num2 = num3 = num5 = 0
        for i in range(1,n):
            dp[i] = min(dp[num2]*2, dp[num3]*3, dp[num5]*5)
            if dp[i] == dp[num2]*2:
                num2 += 1
            if dp[i] == dp[num3]*3:
                num3 += 1
            if dp[i] == dp[num5]*5:
                num5 += 1
        return dp[-1]

結果:
在這裡插入圖片描述

相關文章