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 <= 1690class 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;
}
}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;
}
}