leetcode264-Ugly Number II
来源:互联网 发布:太原高达软件 编辑:程序博客网 时间:2024/05/21 00:45
问题
题目:[leetcode-264]
思路
只想到了朴素的思路,果然TLE。
参考了这篇链接。[ugly number ii]
其实,它的思路也很明显。和素数筛法差不多,这个可以叫做丑数筛法吧。
具体思路是这样,因为任何一个丑数的素因子只能是2,3,5.
所以,可以进一步知道,任何一个大的丑数,都是由小的丑数×2,3,5生成。所以,所有的丑数都是从1开始,然后乘以2,3,5生成。这个不是难点,难点是怎么样维护这个序列。
1 2 3
*2: 2 4 6
*3: 3 6 9
*5: 5 10 15
所以,难度在于怎么维护这个序列。参照的办法是利用三个列表的下表,分别向后走,因为不同的列表可能小的素数是不一样的,所以需要下标来区分他们。
其实,这个题的类似题目也给出了merge k lists这样的提示,所以需要这个的技巧。
代码
class Solution {public: int nthUglyNumber(int n) { vector<int> ret; ret.push_back(1); int i2 = 0; int i3 = 0; int i5 = 0; while(ret.size() < n){ int m2 = ret[i2]*2; int m3 = ret[i3]*3; int m5 = ret[i5]*5; int tmp = min( m2, min(m3, m5) ); if( tmp == m2 ) ++i2; if( tmp == m3 ) ++i3; if( tmp == m5 ) ++i5; ret.push_back(tmp); } return ret.back(); }};
阅读全文
0 0
- LeetCode264. Ugly Number II
- leetcode264. Ugly Number II
- leetcode264-Ugly Number II
- leetcode264.[DP][math][leep] Ugly Number II
- Ugly Number Ugly Number II
- Leetcode -- Ugly Number II
- LeetCode: Ugly Number II
- [leetcode] Ugly Number II
- 264 Ugly Number II
- Leetcode: Ugly Number II
- [LeetCode] Ugly Number II
- Ugly Number II
- LeetCode Ugly Number II
- Ugly Number I II
- [leetcode] Ugly Number II
- [LeetCode] Ugly Number II
- LeetCode ||Ugly Number II
- Ugly Number II
- 树的dfs序
- CF 214 A System of Equations
- [asp.net mvc 奇淫巧技] 05
- 记一次sql server 性能调优,查询从20秒至2秒
- java--面向对象
- leetcode264-Ugly Number II
- 程序员必须逛的同性交友网站(GitHub)!
- 单一文件的断点续传
- angularjs 动态从后台获取下拉框的值
- opencv mat (matrix)数据结构
- Vue.js搭建移动端购物车界面-基本结构和数据渲染
- 根据backtrace_symbols查错误代码行号
- 新的历程
- HAWQ + MADlib 玩转数据挖掘之(三)——向量