Super Ugly Number - Teeeeeebag/LeetCode GitHub Wiki

  1. 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];
    }
}