Back to all solutions
#313 - Super Ugly Number
Problem Description
A super ugly number is a positive integer whose prime factors are in the array primes.
Given an integer n and an array of integers primes, return the nth super ugly number.
The nth super ugly number is guaranteed to fit in a 32-bit signed integer.
Solution
/**
* @param {number} n
* @param {number[]} primes
* @return {number}
*/
var nthSuperUglyNumber = function(n, primes) {
const result = [1];
const pointers = new Array(primes.length).fill(0);
const next = [...primes];
while (result.length < n) {
const min = Math.min(...next);
result.push(min);
for (let i = 0; i < primes.length; i++) {
if (next[i] === min) {
pointers[i]++;
next[i] = primes[i] * result[pointers[i]];
}
}
}
return result[n - 1];
};