Super Ugly Number - Teeeeeebag/LeetCode GitHub Wiki
- mistake made: I didn't increment cnt[minIndex] if minVal == uglyNumbers[i-1]
public class Solution {
public int nthSuperUglyNumber(int n, int[] primes) {
int[] cnt = new int[primes.length];
int[] uglyNumbers = new int[n];
if (n < 1){
return 0;
}
uglyNumbers[0] = 1;
for (int i=1; i<n; ++i){
int minIndex = 0, minVal = Integer.MAX_VALUE;
for (int j=0; j<primes.length; ++j){
if(minVal > primes[j]*uglyNumbers[cnt[j]]){
minIndex = j;
minVal = primes[j]*uglyNumbers[cnt[j]];
}
}
++cnt[minIndex];
if (minVal == uglyNumbers[i-1]){
--i;
} else {
uglyNumbers[i] = minVal;
}
}
return uglyNumbers[n-1];
}
}