c++
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
vector<int> idx(primes.size(), 0);
vector<int> ugly(n);
ugly[0] = 1;
for (int i = 1; i < n; ++i) {
ugly[i] = INT_MAX;
for (int j = 0; j < primes.size(); ++j) {
ugly[i] = min(ugly[i], primes[j] * ugly[idx[j]]);
}
for (int j = 0; j < primes.size(); ++j) {
while (primes[j] * ugly[idx[j]] <= ugly[i]) {
idx[j] ++;
}
}
}
return ugly.back();
}
};
https://leetcode.com/discuss/81411/java-three-methods-23ms-58ms-with-heap-performance-explained