1
// ---------------------O(nlogk)-------------------------4
public int nthSuperUglyNumber(int n, int[] primes) {5
int[] dp = new int[n + 1];8
PriorityQueue<Pair> pq = new PriorityQueue<>();10
for (int i = 0; i < primes.length; i++) {11
pq.add(new Pair(primes[i], 1, primes[i]));14
for (int i = 2; i <= n; ) {15
Pair curr = pq.remove();17
if (curr.val != dp[i - 1]) {22
int newval = curr.prime * dp[curr.ptr + 1];24
pq.add(new Pair(curr.prime, curr.ptr + 1, newval));32
class Pair implements Comparable<Pair> {37
public Pair(int prime, int ptr, int val) {43
public int compareTo(Pair o) {44
return this.val - o.val;48
// -----------------------O(nk)---------------------------51
// public int nthSuperUglyNumber(int n, int[] primes) {52
// int []dp=new int[n+1];55
// int []ptr=new int[primes.length];59
// for(int i=2;i<=n;i++){61
// int min=Integer.MAX_VALUE;63
// for(int j=0;j<ptr.length;j++){64
// int val=dp[ptr[j]]*primes[j];66
// min=Math.min(min,val);73
// for(int j=0;j<ptr.length;j++){74
// int val=dp[ptr[j]]*primes[j];75
// if(val>0 && min==val){