题目: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]