Skip to content

264. Ugly Number II

Difficulty Topics

Description

An ugly number is a positive integer whose prime factors are limited to 2, 3, and 5.

Given an integer n, return the nth ugly number.

 

Example 1:

Input: n = 10
Output: 12
Explanation: [1, 2, 3, 4, 5, 6, 8, 9, 10, 12] is the sequence of the first 10 ugly numbers.

Example 2:

Input: n = 1
Output: 1
Explanation: 1 has no prime factors, therefore all of its prime factors are limited to 2, 3, and 5.

 

Constraints:

  • 1 <= n <= 1690

Solution

ugly-number-ii.py
class Solution:
    def nthUglyNumber(self, n: int) -> int:
        t2 = t3 = t5 = 0
        dp = [1] * n

        for i in range(1, n):
            dp[i] = min(dp[t2] * 2, dp[t3] * 3, dp[t5] * 5)

            if dp[i] == dp[t2] * 2: t2 += 1
            if dp[i] == dp[t3] * 3: t3 += 1
            if dp[i] == dp[t5] * 5: t5 += 1

        return dp[-1]