题目描述:

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

示例 1:

输入: k = 5输出: 9

解题思路:

由题可得,数组应为3a*5b*7c,即每个数字都是列表中先前值的 3 倍、5 倍或 7 倍,因此我们可以检查所有可能的值。但要注意防止重复出现的数字。因此用动态规划DP来解决。

DP动态规划一般用三指针来实现。

举个例子
初始值 ugly[0]=1; index1=0; index2=0; index3=0

ugly[1]=Min(ugly[index1]*3,ugly[index2]*5,ugly[index3]*7)
=Min(1*3,1*5,1*7)
=3
于是 index1++;

ugly[2]=Min(ugly[index1]*3,ugly[index2]*5,ugly[index3]*7)
=Min(3*3,1*5,1*7)
=5
于是 index2++;
以此类推。

java代码实现

class Solution {public int getKthMagicNumber(int k) {int p1=0,p2=0,p3=0;int[] dp=new int[k];dp[0]=1;for(int i=1;i<k;i++){dp[i]=Math.min(Math.min(dp[p1]*3,dp[p2]*5),dp[p3]*7);if(dp[i]==dp[p1]*3){p1++;}if(dp[i]==dp[p2]*5){p2++;}if(dp[i]==dp[p3]*7){p3++;}}return dp[k-1];}
}

leetcode题目:第 k 个数相关推荐

  1. LeetCode 1352. 最后 K 个数的乘积

    1. 题目 请你实现一个「数字乘积类」ProductOfNumbers,要求支持下述两种方法: add(int num) – 将数字 num 添加到当前数字列表的最后面. getProduct(int ...

  2. [leetcode]5341. 最后 K 个数的乘积

    随便写下暴力就过了,美版也是 class ProductOfNumbers {vector<int>nums; public:ProductOfNumbers() {}void add(i ...

  3. LeetCode:面试题40. 最小的k个数

    40. 最小的k个数 题目: 解题思路: 源码: 题目: 解题思路: 1.快速排序: 2.堆排序: 详细解释看leetcode的官网 源码: int comp(void *a,void *b){int ...

  4. 【LeetCode】剑指 Offer 40. 最小的k个数

    [LeetCode]剑指 Offer 40. 最小的k个数 文章目录 [LeetCode]剑指 Offer 40. 最小的k个数 一.笨比解法 二.堆排序 三.快速选择 总结 一.笨比解法 选择排序变 ...

  5. LeetCode题目笔记——779. 第K个语法符号,从超时到0ms(bushi)

    文章目录 题目描述 题目难度--中等 方法一:模拟 代码/Python 方法二:观察规律 代码/Python 总结 这道题是今天的每日一题,还挺有意思的,所以记录一下 题目描述 我们构建了一个包含 n ...

  6. 漫画:BAT必考题目 (最小的k个数)

    今天分享一道比较简单的题目,希望大家可以5分钟掌握! 01 PART 最小的k个数 很简单有木有~ 最小的k个数:输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3 ...

  7. 剑指offer 最小的k个数 leetcode 215. Kth Largest Element in an Array

    注意multiset的一个bug: multiset带一个参数的erase函数原型有两种.一是传递一个元素值,如上面例子代码中,这时候删除的是集合中所有值等于输入值的元素,并且返回删除的元素个数:另外 ...

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

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

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

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

最新文章

  1. 荣耀7x Android8,荣耀8/畅玩7X确认升级安卓8.0
  2. C++ Primer 5th笔记(8)chapter8 类:IO库-string流
  3. html修改按钮背景颜色,html鼠标悬浮在按钮上,让按钮背景变色
  4. nginx 1.8.1安装使用
  5. [BC Round#26] Card 【各种水】
  6. python支持complex吗_Python中complex函数有什么用?
  7. linux下时间编程,Linux下的时间操作编程
  8. 做一个聪明的前端开发者
  9. SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;
  10. python importlib qpython_Python imports指南:Python的导入有更好的理解
  11. 性能测试--jmeter中的HTTP信息头管理器的使用【8】
  12. shell 之while两种写法
  13. 快递取件码生成软件_一种快递柜取件码生成装置及其使用方法与流程
  14. 孕妇适合吃哪些蔬菜?这三种蔬菜很有营养
  15. BGP进阶:BGP 综合实验一
  16. pandas之dropna()的用法
  17. 免费好用的数据可视化软件工具
  18. 蓝桥杯 逗志芃的危机
  19. linux服务器下数学软件下载,GeoGebra For Linux
  20. Flutter中的isolate-spawn(一)

热门文章

  1. 【HNOI2017】礼物
  2. BZOJ 3304: [Shoi2005]带限制的最长公共子序列( LCS )
  3. iOS开发---- 开发错误汇总及解决方法
  4. ShellExecute函数返回值含义
  5. c语言在一组数据中找最大值最小值,用c语言输入一组数据,输出最大最小值,求c语言程序讲解: 输入一组数据,求最大值,最小值,和,平均...
  6. 基础编程题目集 7-4 BCD解密 (10 分)
  7. 广度优先搜索(BFS)——马的遍历(洛谷 P1443)
  8. Oracle数据库迁移:异构传输表空间TTS HP-UX迁移至Redhat Linux 7.7
  9. 2020 数据技术嘉年华:吹响国产数据库的集结号 诚邀参会览技术前沿
  10. 实战演练丨SCN太大引发ORA-600[2252]