给你一个整数 n
,请你找出并返回第 n
个 丑数 。
丑数 就是质因子只包含 2
、3
和 5
的正整数。
示例 1:
输入:n = 10
输出:12
解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。
示例 2:
输入:n = 1
输出:1
解释:1 通常被视为丑数。
提示:
1 <= n <= 1690
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int nthUglyNumber(int n) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
Set<Integer> mySet = new HashSet<>();
pq.add(1);
mySet.add(1);
int result = 0;
for (int i = 0; i < n; i++) {
result = pq.poll();
if (!mySet.contains(result * 2) && result < Integer.MAX_VALUE / 2) {
pq.add(result * 2);
mySet.add(result * 2);
}
if (!mySet.contains(result * 3) && result < Integer.MAX_VALUE / 3) {
pq.add(result * 3);
mySet.add(result * 3);
}
if (!mySet.contains(result * 5) && result < Integer.MAX_VALUE / 5) {
pq.add(result * 5);
mySet.add(result * 5);
}
}
return result;
}
}
//leetcode submit region end(Prohibit modification and deletion)