1. 题目

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

示例 1:
输入: k = 5
输出: 9

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

2. 解题

2.1 set “队列”

  • 满足题目要求的数只能乘以3、5、7
  • set,有序,可以去重、当做优先队列
  • 不断的出队begin(), 且把 begin() 的 3,5,7倍数插入队列
class Solution {public:int getKthMagicNumber(int k) {set<long> q;//可以看做小顶堆long ans;q.insert(1);while(k--){ans = *q.begin();q.erase(q.begin());q.insert(ans*3);q.insert(ans*5);q.insert(ans*7);}return ans;}
};

2.2 动态规划

  • 参考
    LeetCode 263. 丑数 && 264. 丑数 II(DP)
    LeetCode 313. 超级丑数(动态规划)
    LeetCode 1201. 丑数 III(最小公倍数+二分查找)

自己画一下就明白了,比较潦草,见谅

class Solution {public:int getKthMagicNumber(int k) {vector<long> dp(k+1,0);dp[1] = 1;int i3=1, i5=1, i7=1;for(int i = 2; i <= k; i++){dp[i] = min(dp[i3]*3, min(dp[i5]*5, dp[i7]*7));if(dp[i3]*3 == dp[i])i3++;if(dp[i5]*5 == dp[i])i5++;if(dp[i7]*7 == dp[i])i7++;}return dp[k];}
};

0 ms 6.1 MB

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

  1. 程序员面试金典 - 面试题 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 ...

  2. 程序员面试金典 - 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 二分查找 1. 题目 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一 ...

  3. 程序员面试金典 - 面试题 17.07. 婴儿名字

    题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 每年,政府都会公布一万个最常见的婴 ...

  4. 程序员面试金典 - 面试题 17.06. 2出现的次数(找递推规律)

    1. 题目 编写一个方法,计算从 0 到 n (含 n) 中数字 2 出现的次数. 示例: 输入: 25 输出: 9 解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 ...

  5. 程序员面试金典 - 面试题 17.22. 单词转换(BFS)

    1. 题目 给定字典中的两个词,长度相等. 写一个方法,把一个词转换成另一个词, 但是一次只能改变一个字符. 每一步得到的新词都必须能在字典中找到. 编写一个程序,返回一个可能的转换序列.如有多个可能 ...

  6. 程序员面试金典 - 面试题 16.09. 运算(只用+法做乘除)

    1. 题目 请实现整数数字的乘法.减法和除法运算,运算结果均为整数数字, 程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算. 你的实现应该支持如下操作: Operati ...

  7. 程序员面试金典 - 面试题 17.15. 最长单词(排序+递归)

    1. 题目 给定一组单词words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成. 若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串. ...

  8. [Leetcode][程序员面试金典][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]

    [问题描述][中等] [解答思路] 1. 动态规划 动态规划流程 第 1 步:设计状态 dp[i] 表示字符串的前 i 个字符的最少未匹配数. 第 2 步:状态转移方程 假设当前我们已经考虑完了前 i ...

  9. 程序员面试金典 - 面试题 17.26. 稀疏相似度(哈希map)

    1. 题目 两个(具有不同单词的)文档的交集(intersection)中元素的个数除以并集(union)中元素的个数,就是这两个文档的相似度. 例如,{1, 5, 3} 和 {1, 7, 2, 3} ...

最新文章

  1. CSDN 星城大巡礼,长沙“科技之星”年度企业评选正式开启
  2. 5 Best User Interface Design Pattern Libraries
  3. 技巧分享:如何利用CSS属性修改图片颜色?
  4. python + hadoop (案例)
  5. matlab中select,[转载]MATLAB阈值获取函数ddencmp、thselect、wbmpen和w
  6. 从五个维度来计算互联网产品单个用户的价值
  7. pyhive 连接 Hive 时错误
  8. 文本相似度-相似度度量
  9. Python学习之==日志模块
  10. 恶意广告活动利用 WebKit 0day 实施欺诈
  11. python测试系列教程 —— 调试日志logging
  12. Python学习第四天
  13. 彼之蜜糖,我之砒霜;彼之敝履,吾之瑰宝
  14. 多媒体计算机软件都包括哪些,多媒体计算机软件都有什么
  15. java安装教程(eclipse)
  16. 封装系统(以封装Windows 7为例)
  17. 用电脑怎么快速抠图?怎么把图片抠成透明背景?
  18. mysql三个分组排序方法row_number()、rank()、dense_rank()
  19. JSON数组形式字符串转换为Map数组
  20. layUI基本使用2(js)

热门文章

  1. 基于Hi3516A的H265 IPC LIVE555 开发基本原理
  2. easyexcel 填充模板 格式变了_Qamp;A | 如何制作规范的电子合同模板?
  3. 【Ubuntu】ubuntu系统下python3和python2环境自由切换
  4. 二维码扫描和应用跳转
  5. 阿里云 腾讯云 服务器挂载数据盘
  6. SQL基础---SQL AND OR 运算符
  7. [推荐]VMware Workstation 6.5虚拟机(汉化补丁+注册机+原版安装文件)
  8. Workflow WF Reference Links for 2009-03-20
  9. file_table.c 文件分析 linux1_0\linux\fs\file_table.c
  10. MySQL源码解读之数据结构-LF_DYNARRAY