欢迎光临散文网 会员登陆 & 注册

Leetcode Day15 2

2022-04-19 14:23 作者:我喜欢喝一点点  | 我要投稿

剑指 Offer 49. 丑数

我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。


 


示例:


输入: n = 10

输出: 12

解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。


这道题用的大佬的dp思路,p2、p3、p5类似于指针,比较当前×的数字,取最小值然后递增。


class Solution:

    def nthUglyNumber(self, n: int) -> int:

        dp=[0]*(n+1)

        dp[1]=1

        p2=p3=p5=1


        for i in range(2,n+1):

            num2,num3,num5=dp[p2]*2,dp[p3]*3,dp[p5]*5

            dp[i]=min(num2,num3,num5)

            if dp[i]==num2:

                p2+=1

            if dp[i]==num3:

                p3+=1

            if dp[i]==num5:

                p5+=1

        return dp[n]


Leetcode Day15 2的评论 (共 条)

分享到微博请遵守国家法律