剑指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 };
原文地址:https://www.cnblogs.com/q1204675546/p/13362551.html