โ† All problems

264. Ugly Number II

MediumOpen on LeetCodeProblem statement

Problem Statement

264. Ugly Number II

Medium


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:

Java โ€” minheap

Source file
class Solution {
    public int nthUglyNumber(int n) {
        Queue<Long> pq = new PriorityQueue<>();
        Set<Long> vis = new HashSet<>();
        pq.offer(1L);
        while(!pq.isEmpty()){
            long top = pq.poll();
            if(vis.contains(top))
                continue;
            vis.add(top);
            if(vis.size()==n)
                return (int)top;
            pq.offer(top*2);
            pq.offer(top*3);
            pq.offer(top*5);
        }
        return 1;
    }
}