面试题 17.09. 第 k 个数

知识浅谈 知识浅谈 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

题意

有些数的素因子只有 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;
    }
}

img

...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
知识浅谈
知识浅谈 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
知识浅谈(万道面试题) 19,926 成员 99 内容