剑指office--------丑数

Posted q1204675546

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指office--------丑数相关的知识,希望对你有一定的参考价值。

题目描述

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
 
 
 
思路:借用set的自动除重,与自动排序功能。
 
 1 class Solution {
 2 public:
 3     long long GetUglyNumber_Solution(long long index) {
 4         if (index<=0)    return 0;
 5         
 6         set<long long>q,p;
 7         set<long long>::iterator it;
 8         q.insert(1);
 9         long long res=1;
10         while (1){
11             if (res==index){
12                 return *(q.begin());
13             }
14             long long temp=*(q.begin());
15             p.insert(temp*2);
16             p.insert(temp*3);
17             p.insert(temp*5);
18             q.erase(*(q.begin()));
19             q.insert(*(p.begin()));
20             p.erase(*(p.begin()));
21             res++;
22         }
23         return 0;
24     }
25 };

 

以上是关于剑指office--------丑数的主要内容,如果未能解决你的问题,请参考以下文章

《剑指offer》---丑数

剑指offer-丑数

剑指Offer——丑数

剑指offer丑数

剑指offer面试题 49. 丑数

《剑指offer》第四十九题(丑数)