9,522
社区成员
发帖
与我相关
我的任务
分享
有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。
示例 1:
输入: k = 5
输出: 9
注意大数问题
class Solution {
public int getKthMagicNumber(int k) {
Set<Long> set = new HashSet<Long>();
PriorityQueue<Long> queue = new PriorityQueue<Long>();
queue.offer(1L);
long t=0;
while(!queue.isEmpty()&&k>0){
t = queue.poll();
k--;
if(!set.contains(t*3)) {queue.offer(t*3);set.add(t*3);}
if(!set.contains(t*5)) {queue.offer(t*5);set.add(t*5);}
if(!set.contains(t*7)) {queue.offer(t*7);set.add(t*7);}
}
return (int)t;
}
}