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

代码
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]
本文介绍了一种动态规划的方法来求解序列中的第n个丑数,即只包含质因子2、3和5的数。通过维护三个指针p2、p3和p5,分别对应于当前考虑的2、3和5的倍数,动态更新dp数组,找到最小的丑数。代码中展示了详细的实现过程。
172万+

被折叠的 条评论
为什么被折叠?



