题目

有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。

示例

输入: k = 5

输出: 9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/get-kth-magic-number-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1:优先队列(小根堆)

和剑指 Offer 49. 丑数相似

Java实现
class Solution {public int getKthMagicNumber(int k) {PriorityQueue<Long> pq = new PriorityQueue<>();Set<Long> set = new HashSet<>();pq.offer(1L);set.add(1L);int ans = 0;for (int i = 0; i < k; i++) {long var = pq.poll();ans = (int)var;if (set.add(var * 3)) pq.offer(var * 3);if (set.add(var * 5)) pq.offer(var * 5);if (set.add(var * 7)) pq.offer(var * 7);}return ans;}
}

方法2:多路归并

⭐题解:https://leetcode.cn/problems/get-kth-magic-number-lcci/solution/zhua-wa-mou-si-by-muse-77-x2i4/


Java实现
class Solution {public int getKthMagicNumber(int k) {int idx1 = 0, idx2 = 0, idx3 = 0;int[] res = new int[k];res[0] = 1;for (int i = 1; i < k; i++) {int a = res[idx1] * 3;int b = res[idx2] * 5;int c = res[idx3] * 7;int minValue = Math.min(a, Math.min(b, c));if (a == minValue) idx1++;if (b == minValue) idx2++;if (c == minValue) idx3++;res[i] = minValue;}return res[k - 1];}
}

力扣 面试题 17.09. 第 k 个数相关推荐

  1. 力扣 面试题 17.14. 最小K个数

    题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 来源:力扣(LeetC ...

  2. ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   有些数的素因子只有 3 ...

  3. 程序员面试金典 - 面试题 17.09. 第 k 个数(set优先队列/DP)

    1. 题目 有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数. 注意,不是必须有这些素因子,而是必须不包含其他的素因子. 例如,前几个数按顺序应该是 1,3,5,7,9,15,21. 示 ...

  4. 面试题 17.09. 第 k 个数[小顶堆][动态规划]

    思路 暴力搜索 因为要求的数只含3\5\7这三个素因子,因此只需判断将每个数除3/5/7除尽后是否为1,从而判断是不是所要求序列中的一个数. 超时 代码如下: class Solution {publ ...

  5. 【每日一题】 面试题 17.14. 最小K个数

    面试题 17.14. 最小K个数

  6. 面试题 17.14. 最小K个数

    面试题 17.14. 最小K个数 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3 ...

  7. leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排

    leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...

  8. 程序员面试金典 - 面试题 17.14. 最小K个数(快排划分O(n))

    1. 题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4]提示: 0 &l ...

  9. 小k java_leetcode——面试题 17.14. 最小K个数 (java快速排序)

    描述:设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 解题思路: 这题因为不要求排 ...

最新文章

  1. 每天生产45亿词!GPT-3已渗透进300+应用中,网友:边吃边拉
  2. VMplay CEO 艾奇伟:借鉴Docker思路 像投影仪一样将App投到云端
  3. 第一期站立会议2(11.16个人)
  4. jquery中的load()方法使用要点
  5. 深入理解浏览器原理和架构|硬核
  6. matlab音频基频的提取,(620512681) 自相关基频提取算法的MATLAB实现
  7. 论文浅尝 | 面向自动问题生成的跨语言训练
  8. java ajax查询_java-如何计时ajax查询(发送查询,处理,接收响应)
  9. 阅读Java程序_几道java程序阅读题 不知道能不能用到 给大家分享一下
  10. 几种常用的JSON解析工具的使用
  11. 通信原理学习笔记4:信道编码、分组码、卷积码、现代信道编码(Turbo码、LDPC码、Polar码)
  12. 2022数学建模思路 - 案例
  13. Leetcode 颜色分类
  14. 海思AI芯片3559A方案学习(一)
  15. 微信小程序开发——单行文本溢出显示省略号
  16. explicit 为什么禁止隐式类型转换
  17. python爬取微博内容_python如何抓取新浪微博的微博内容!
  18. nfc读卡java开发,Android实现读取NFC卡卡号示例
  19. 二本机械毕业2年,从外包ETL到大厂数据开发,月薪13K到年薪40W
  20. 【Java基础】包、类、接口、常量、方法、变量的命名规则

热门文章

  1. Foods Keep Younger, Strong And Healthy
  2. win11正式版如何退回win10 windows11正式版退回win10的步骤方法
  3. 【哲学问题】-《哲学家们都干了些什么?》
  4. 什么是链接?(动态链接库和静态链接库的对比)
  5. 内存屏障(Memory Barrier)(二)什么是读屏障?
  6. DAY SIX -- ospf的不规则区域问题和链路状态通告LSA
  7. 来往:一张阿里自己的新彩票
  8. 核高基2011申报指南或3月出台
  9. 特许市场技术分析师(CMT)推荐材料
  10. syn flood 攻击 c 语言源代码,以太网模拟syn flood攻击