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]