打卡群刷题总结0922——丑数 II

2020-09-28 16:35:53 浏览数 (1)

题目:264. 丑数 II

链接:https://leetcode-cn.com/problems/ugly-number-ii

编写一个程序,找出第 n 个丑数。 丑数就是质因数只包含 2, 3, 5 的正整数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。

解题:

1、dp问题。

下一个丑数肯定是2的倍数、3的倍数或者5的倍数。

代码:

代码语言:javascript复制
class Solution:
    def nthUglyNumber(self, n: int) -> int:
        i2, i3, i5 = 0, 0, 0
        ls = [1]
        for i in range(1, n):
            while ls[i2] * 2 <= ls[-1]:
                i2  = 1
            while ls[i3] * 3 <= ls[-1]:
                i3  = 1
            while ls[i5] * 5 <= ls[-1]:
                i5  = 1
            ls.append(min(ls[i2] * 2, ls[i3] * 3, ls[i5] * 5))
        return ls[-1]        

0 人点赞