264. Ugly Number II
class Solution:
def nthUglyNumber(self, n: int) -> int:
dp = [-1] * (n + 1)
i2, i3, i5 = 0, 0, 0
dp[0] = 1
for i in range(1, n + 1):
num2 = dp[i2] * 2
num3 = dp[i3] * 3
num5 = dp[i5] * 5
cur = min(num2, num3, num5)
if (cur == num2):
i2 += 1
if (cur == num3):
i3 += 1
if (cur == num5):
i5 += 1
dp[i] = cur
return dp[n - 1]