DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

Ugly Number II

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:

import heapq

class Solution:
    def nthUglyNumber(self, n: int) -> int:
        uglies = [1]
        uglySet = {1}
        while len(uglies) < n * 10:
            for num in uglies[:]:
                for k in [2, 3, 5]:
                    p = num * k
                    if p not in uglySet:
                        heapq.heappush(uglies, p)
                        uglySet.add(p)
        return heapq.nsmallest(n, uglies)[n - 1]
Enter fullscreen mode Exit fullscreen mode

Top comments (0)