4.Ugly Number II-丑数 II(中等题)
来源:互联网 发布:我的世界手机版火车js 编辑:程序博客网 时间:2024/06/14 16:01
丑数 II
题目
设计一个算法,找出只含素因子2,3,5 的第 n 大的数。
符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12…注意事项
我们可以认为1也是一个丑数样例
如果n = 9, 返回 10
挑战
要求时间复杂度为O(nlogn)或者O(n)
题解
我们可以先回顾一下丑数的解法,用该数循环除以2,3,5,直至不能再除为止。那么本题我们是不是可以逆向思维一下,用2,3,5三个数去组合拼装出所有的丑数呢。本题可以使用优先队列来解决。为2,3,5三个因子各建立1个队列,并将2,3,5分别入列,再优先将最小值出列为第1各丑数(需考虑1)。下次循环将上次出列的最小值一次乘以各队列的头元素获取下一轮丑数,并在此优先出列最小值…
class Solution { /** * @param n an integer * @return the nth prime number as description. */ public int nthUglyNumber(int n) { Queue<Integer> q2 = new LinkedList<>(); Queue<Integer> q3 = new LinkedList<>(); Queue<Integer> q5 = new LinkedList<>(); int count = 1; int val = 1; while(count < n) { q2.offer(2*val); q3.offer(3*val); q5.offer(5*val); int min = Math.min(Math.min(q2.peek(),q3.peek()),q5.peek()); if (q2.peek() == min) { q2.poll(); } if (q3.peek() == min) { q3.poll(); } if (q5.peek() == min) { q5.poll(); } count++; val = min; } return val; }};
Last Update 2016.9.29
0 0
- 4.Ugly Number II-丑数 II(中等题)
- Ugly Number II | Leetcode 丑数II
- 丑数II(Ugly Number II)
- **[Lintcode]Ugly Number II 丑数 II
- 518.Super Ugly Number-超级丑数(中等题)
- [C++]Ugly Number II丑数2
- 264. Ugly Number II&丑数
- LeetCode OJ 之 Ugly Number II (丑数-二)
- LeetCode (39) Ugly Number I II (丑数)
- leetcode 264. Ugly Number II-丑数|动态规划
- LeetCode Ugly Number II(丑数的计算)
- LeetCode-263.264. Ugly Number II (JAVA)丑数
- LeetCode 264. Ugly Number II(丑数字)
- Ugly Number(丑数)
- Ugly Number(丑数)
- 83.Single Number II-落单的数 II(中等题)
- ugly number(丑数)
- 丑数(Ugly Number)
- kaldi学习笔记 -- 训练单音素(monophone)模型脚本 -- steps/train_mono.sh
- 第三周项目4(2)
- Java笔记(5)-String、StringBuffer、StringTokenizer、Date、Calendar
- Java中的运行时异常
- iOS 使用NJKWebViewProgress做webview进度条
- 4.Ugly Number II-丑数 II(中等题)
- hdu5900(2016沈阳网络赛1009区间dp)
- BASH脚本差异生成升级热更新包
- 第12章课后第5题答案
- 大二前期工作计划以及近期具体安排
- 如何选择开源许可证
- 逗号运算符
- update
- 文本自适应(sizeToFit)