编写一段程序来查找第 n
个超级丑数。
超级丑数是指其所有质因数都是长度为 k
的质数列表 primes
中的正整数。
是丑数的升级版,背下丑数二的三指针模板再改成数组就好了
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
vector<int>ans,idx(primes.size(),0),tmp(primes.size(),0);
ans.push_back(1);
while(ans.size() < n)
{
int Min = INT_MAX;
for(int i = 0;i<primes.size();i++)
{
tmp[i] = ans[idx[i]] * primes[i];
Min = min(Min,tmp[i]);
}
for(int i = 0;i<primes.size();i++)
{
if(tmp[i] == Min) idx[i]++;
}
ans.push_back(Min);
}
return ans[n-1];
}
};