力扣 面试题 17.09. 第 k 个数
题目
有些数的素因子只有 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 个数相关推荐
- 力扣 面试题 17.14. 最小K个数
题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 来源:力扣(LeetC ...
- ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 有些数的素因子只有 3 ...
- 程序员面试金典 - 面试题 17.09. 第 k 个数(set优先队列/DP)
1. 题目 有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数. 注意,不是必须有这些素因子,而是必须不包含其他的素因子. 例如,前几个数按顺序应该是 1,3,5,7,9,15,21. 示 ...
- 面试题 17.09. 第 k 个数[小顶堆][动态规划]
思路 暴力搜索 因为要求的数只含3\5\7这三个素因子,因此只需判断将每个数除3/5/7除尽后是否为1,从而判断是不是所要求序列中的一个数. 超时 代码如下: class Solution {publ ...
- 【每日一题】 面试题 17.14. 最小K个数
面试题 17.14. 最小K个数
- 面试题 17.14. 最小K个数
面试题 17.14. 最小K个数 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3 ...
- leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排
leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,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 ...
- 小k java_leetcode——面试题 17.14. 最小K个数 (java快速排序)
描述:设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 解题思路: 这题因为不要求排 ...
最新文章
- 每天生产45亿词!GPT-3已渗透进300+应用中,网友:边吃边拉
- VMplay CEO 艾奇伟:借鉴Docker思路 像投影仪一样将App投到云端
- 第一期站立会议2(11.16个人)
- jquery中的load()方法使用要点
- 深入理解浏览器原理和架构|硬核
- matlab音频基频的提取,(620512681) 自相关基频提取算法的MATLAB实现
- 论文浅尝 | 面向自动问题生成的跨语言训练
- java ajax查询_java-如何计时ajax查询(发送查询,处理,接收响应)
- 阅读Java程序_几道java程序阅读题 不知道能不能用到 给大家分享一下
- 几种常用的JSON解析工具的使用
- 通信原理学习笔记4:信道编码、分组码、卷积码、现代信道编码(Turbo码、LDPC码、Polar码)
- 2022数学建模思路 - 案例
- Leetcode 颜色分类
- 海思AI芯片3559A方案学习(一)
- 微信小程序开发——单行文本溢出显示省略号
- explicit 为什么禁止隐式类型转换
- python爬取微博内容_python如何抓取新浪微博的微博内容!
- nfc读卡java开发,Android实现读取NFC卡卡号示例
- 二本机械毕业2年,从外包ETL到大厂数据开发,月薪13K到年薪40W
- 【Java基础】包、类、接口、常量、方法、变量的命名规则
热门文章
- Foods Keep Younger, Strong And Healthy
- win11正式版如何退回win10 windows11正式版退回win10的步骤方法
- 【哲学问题】-《哲学家们都干了些什么?》
- 什么是链接?(动态链接库和静态链接库的对比)
- 内存屏障(Memory Barrier)(二)什么是读屏障?
- DAY SIX -- ospf的不规则区域问题和链路状态通告LSA
- 来往:一张阿里自己的新彩票
- 核高基2011申报指南或3月出台
- 特许市场技术分析师(CMT)推荐材料
- syn flood 攻击 c 语言源代码,以太网模拟syn flood攻击