简单大顶堆。
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
std::priority_queue<int, std::vector<int>, std::greater<int> > nums;
nums.push(1);
while(--n)
{
//cout<<nums.top()<<endl;
int topNum=nums.top();
nums.pop();
while((!nums.empty())&&nums.top()==topNum)
nums.pop();
for(int i=0;i<primes.size();i++)
if(topNum<=INT_MAX/primes[i])
nums.push(topNum*primes[i]);
}
return nums.top();
}
};