(LeetCode 264) Ugly Number II
来源:互联网 发布:小蚊子数据分析百度云 编辑:程序博客网 时间:2024/06/16 08:00
Q:
Write a program to find the n-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.
Note that 1 is typically treated as an ugly number.
Hint:
The naive approach is to call isUgly for every number until you reach the nth one. Most numbers are not ugly. Try to focus your effort on generating only the ugly ones.
An ugly number must be multiplied by either 2, 3, or 5 from a smaller ugly number.
The key is how to maintain the order of the ugly numbers. Try a similar approach of merging from three sorted lists: L1, L2, and L3.
Assume you have Uk, the kth ugly number. Then Uk+1 must be Min(L1 * 2, L2 * 3, L3 * 5).
如果一个数的因子只有2,3,5那么就说它是一个丑数,特殊的(1也是丑数),求第n个丑数。
solution:
很惭愧,这道题想了很久没有想出来,最后还是参考的别人的解法。
代码不难,关键是很灵巧,比较难想到。
代码不难,但是讲起来很晦涩,所以我就不讲解了,大家按照代码跑两个循环就能懂其中的机制了。。。
class Solution {public: int nthUglyNumber(int n) { int *uglyNums = new int[n]; int index_2=0; int index_3=0; int index_5=0; uglyNums[0]=1; for(int i=1;i<n;i++){ int min = mins( uglyNums[index_2]*2, uglyNums[index_3]*3, uglyNums[index_5]*5); if(min==uglyNums[index_2]*2)index_2++; if(min==uglyNums[index_3]*3)index_3++; if(min==uglyNums[index_5]*5)index_5++; uglyNums[i]=min; } return uglyNums[n-1]; } int mins(int x,int y,int z){ int m = (x<y)?x:y; return (m<z)?m:z; }};
Reference Link:
http://my.oschina.net/Tsybius2014/blog/495962
- Leetcode 264(Ugly Number II)
- leetCode #264 Ugly Number II
- leetcode 264: Ugly Number II
- LeetCode(264)Ugly Number II
- [Leetcode 264] Ugly Number II
- Leetcode 264 : Ugly Number II
- leetcode 264 : Ugly Number II
- LeetCode 264: Ugly Number II
- LeetCode 264 Ugly Number II
- 【LeetCode-264】Ugly Number II
- (LeetCode 264) Ugly Number II
- LeetCode 264 Ugly Number II
- LeetCode 264: Ugly Number II
- LeetCode[264] Ugly Number II
- Leetcode -- Ugly Number II
- LeetCode: Ugly Number II
- [leetcode] Ugly Number II
- Leetcode: Ugly Number II
- 区块链公司Chain在纳斯达克区块链…
- c#学习笔记六 多态性详解
- Coinbase新软件遭Bitcoin.org移除
- 设计模式-桥接模式
- 突尼斯邮政试水非洲数字货币市场
- (LeetCode 264) Ugly Number II
- 2016年银行该如何处置块链
- 2016年备受关注的5家比特币区块链…
- 2016年比特币面临的大挑战:达到一…
- 2015年——纳斯达克与区块链相遇之年…
- global.php
- 2016年国际消费电子展对比特币采用…
- Ecplise导入工程报Cannot import *** because the project name is in use问题
- 比特币回馈:2015年最大的慈善活动