DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

1

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

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay