Super Ugly Number

Write a program to find the nth super ugly number.

  • Time: O(n)
  • Space: O(n)
public int nthSuperUglyNumber(int n, int[] primes) {
    int[] count = new int[primes.length];
    int[] dp = new int[primes.length];
    for (int i = 0; i < primes.length; i++) {
        dp[i] = primes[i];
    }
    int[] ret = new int[n];
    ret[0] = 1;
    for (int i = 1; i < n; i++) {
        ret[i] = Integer.MAX_VALUE;
        for (int j = 0; j < primes.length; j++) {
            ret[i] = Math.min(ret[i], dp[j]);
        }
        for (int j = 0; j < primes.length; j++) {
            if (ret[i] == dp[j]) {
                dp[j] = primes[j] * ret[++count[j]];
            }
        }
    }
    return ret[n - 1];
}

results matching ""

    No results matching ""