本来用数组做标志位,但是测试数据有第1500个,859963392,惹不起哦
---------------------------------------------------------------------------------------------------------------------
时间限制:1秒 空间限制:32768K 热度指数:238729
本题知识点: 数组
题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
class Solution {
public:
int GetUglyNumber_Solution(int n) {
if(n < ) return n;
int ct = ;
unsigned long flag;
priority_queue<unsigned long, vector<unsigned long>, greater<unsigned long>> Q;
Q.push();
while(ct < n-) {
unsigned long tmp = Q.top();Q.pop();
if(tmp == flag) {
continue;
}else ct++;
flag = tmp;
Q.push(tmp*),Q.push(tmp*),Q.push(tmp*);
}
while(flag == Q.top())Q.pop();
return Q.top();
}
};