面试题 17.09. 第 k 个数

知识浅谈 🐄🐄🐄🐄🐄大佬
后端领域优质创作者
博客专家认证
2022-09-28 09:11:07

题意

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

...全文
129 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

9,522

社区成员

发帖
与我相关
我的任务
社区描述
知识浅谈(万道面试题)社区,旨在为找工作的小伙伴提供技术内容共享学习平台,助力每位小伙伴找到好工作,欢迎各位小伙伴的加入。
jvm小程序java 个人社区 吉林省·长春市
社区管理员
  • 知识浅谈
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

【社区倡导与禁止】

  • 社区倡导积极发帖,互相交流技术问题,学习心得。
  • 社区不限制技术领域,后端内容增加加精权重
  • 社区禁止发布低俗、不健康的内容

【社区积分规则】

  • 在社区「发帖」得10积分
  • 内容被管理员「加精」得10积分
  • 点赞他人内容得1积分
  • 评论内容得2积分

试试用AI创作助手写篇文章吧