264. 丑数 II

————————————————————————————————————————————
编写一个程序,找出第 n 个丑数。

丑数就是只包含质因数 2, 3, 5 的正整数。

示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:

1 是丑数。
n 不超过1690。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ugly-number-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
————————————————————————————————————————————
解题思路:题目中可以知道,丑数就是只包含因数2,3,5的正整数,并且后面的丑数必然是前面的丑数通过*2,3,5来的,dp[i]用于存储第i位丑数的值。对于dp[i]之后的丑数,必定存在值为dp[i]*2、dp[i]*3、dp[i]*5的丑数。但同时有可能存在dp[i-1]*2、dp[i-1]*3、dp[i-1]5的值比前面的数的值大,因此需要将后面的丑数进行排序,我们需要做的就是将后面的丑数进行排序,我们用三个指针分别代表2,*3,*5的index。

例如已有[1],分别乘2,3,5,得到的丑数中最小的是2,则将2的指针+1。那么2的指针就是2。下一次迭代的时候,得到的值就是4,3,5,那么下一次迭代就是*3的指针+1。

但是注意存在一种情况,就是23=6,同时有32=6,这时候会存在重复的情况,所以我们在判断指针+1的时候,需要使用多个if,而不能使用if…else…,因为这样会导致出现重复的情况。

具体的C++代码如下:

class Solution {
public:int nthUglyNumber(int n) {vector<int> dp(n,1);  //创建存储状态量的数组int two = 0;  //初始化*2的指针位置为0,以下指针类似,都初始化为0。int three = 0;int five = 0;for(int i=1;i<n;i++){dp[i] = min(dp[two]*2,min(dp[three]*3,dp[five]*5));  //分别将指针指向的丑数的值乘于2、3、4,并找到其中的最小值if(dp[i]==dp[two]*2)    //更新指针的索引位置two++;if(dp[i]==dp[three]*3)three++;if(dp[i]==dp[five]*5)five++;}return dp[n-1];}
};

leetcode - 264. 丑数 II相关推荐

  1. LeetCode 264. 丑数 II

    264. 丑数 II Ideas 竟然没想到用小根堆,白学了,再把小根堆抄一遍. Code Python class Solution:def nthUglyNumber(self, n: int) ...

  2. Leetcode 264. 丑数 II 解题思路及C++实现

    方法一:暴力解法 解题思路: 直接从整数1开始,不断递增,判断该数字是否为丑数(专门写一个判断是否为丑数的函数),当遇到一个丑数,则计数值加1,直至遇到n个丑数为止. 当n很大时,这种暴力解法会遇到 ...

  3. 86. Leetcode 264. 丑数 II (动态规划-基础题)

    给你一个整数 n ,请你找出并返回第 n 个 丑数 .丑数 就是只包含质因数 2.3 和/或 5 的正整数.示例 1:输入:n = 10 输出:12 解释:[1, 2, 3, 4, 5, 6, 8, ...

  4. 78. Leetcode 264. 丑数 II (堆-技巧二-多路归并)

    给你一个整数 n ,请你找出并返回第 n 个 丑数 .丑数 就是只包含质因数 2.3 和/或 5 的正整数.示例 1:输入:n = 10 输出:12 解释:[1, 2, 3, 4, 5, 6, 8, ...

  5. leetcode 264. 丑数 II(堆)

    给你一个整数 n ,请你找出并返回第 n 个 丑数 . 丑数 就是只包含质因数 2.3 和/或 5 的正整数. 示例 1: 输入:n = 10 输出:12 解释:[1, 2, 3, 4, 5, 6, ...

  6. LeetCode 264.丑数 II(动态规划)

    题目描述 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10 ...

  7. LeetCode 263. 丑数 264. 丑数 II(DP)

    文章目录 1. LeetCode 263. 丑数 解题 2. LeetCode 264. 丑数 II DP解题 1. LeetCode 263. 丑数 编写一个程序判断给定的数是否为丑数. 丑数就是只 ...

  8. 693. 交替位二进制数 / 227. 基本计算器 II / 264. 丑数 II

    693. 交替位二进制数[简单题][每日一题] 思路:[位运算] 排除特殊情况n=1,此时return true. 将n转为二进制字符串,依次将相邻两位数字进行异或运算. 异或运算的结果为flag,如 ...

  9. 【LeetCode】263.丑数 264. 丑数 II

    I. 263. 丑数(是否为丑数) 一.题目描述 编写一个程序判断给定的数是否为丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例 1: 输入: 6 输出: true 解释: 6 = 2 ...

最新文章

  1. iOS开发笔记(十七):持久化方案之 NSUserDefaults
  2. 如何解决虚拟机频繁分离和附加磁盘导致的识别错误
  3. android_ExpandableListView 下拉列表使用
  4. CodeForces - 1417E XOR Inverse(字典树求逆序对+分治)
  5. asp.net 的page 基类页面 做一些判断 可以定义一个基类页面 继承Page类 然后重写OnPreLoad事件...
  6. ycms+php,CMS下载_建站大师 - 建站模板,CMS模板,网站开发
  7. termux怎么生成木马_一个木马病毒是如何诞生的?
  8. Bootstrap3 面板的情景类
  9. get请求400错误 vue_vue用get请求,一个很奇怪的现象
  10. 20个全屏响应式菜单效果荟萃
  11. 用闭包方式实现点击a标签弹也索引值
  12. java泛型范围_Java泛型范围
  13. java lang ClassNotFoundException org apache jsp index jsp解决
  14. CAD中插入外部参照字体会变繁体_打开CAD图纸发现图形丢失,原来是大意了,四招解决...
  15. 如何添加PR视频特效?
  16. webscraper多页爬取_爬虫工具实战篇(Web Scraper)- 京东商品信息爬取(原创)
  17. redis使用中经常出现 Could not get a resource from the pool 异常,解决办法总结
  18. CSDN代码块背景色的调整
  19. 4种公众号文章编辑器亲测对比
  20. python opencv resize函数_python cv2.resize函数high和width注意事项说明

热门文章

  1. Hibernate注释大全
  2. 分布式数据库clickhouse、tidb、palo对比
  3. DreamFactory入门指南 - 第2章安装和配置DreamFactory
  4. 物联网大数据平台应具备的功能和特点
  5. 容器编排技术 -- Kubernetes 重新配置活动集群中节点的 Kubelet
  6. 初学者Git和GitHub简介(教程)
  7. BGP——软收敛(讲解+配置命令)
  8. mysql索引的增删_mysql索引的增删改查怎么实现?
  9. C#开发笔记之07-如何实现交换2个变量的值而不引入中间变量?
  10. 数字签名加密过程举例