Appearance
313. 超级丑数
原题链接:LeetCode 313. 超级丑数
题目描述
超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。
给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。
题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。
示例 1:
primes
示例 2:
**输入:**n = 1, primes = [2,3,5] **输出:**1 **解释:**1 不含质因数,因此它的所有质因数都在质数数组 primes = [2,3,5] 中。
提示:
1 <= n <= 105
- `1 <= primes.length <= 100`
- `2 <= primes[i] <= 1000`
- 题目数据** 保证** `primes[i]` 是一个质数
- `primes` 中的所有值都 **互不相同** ,且按 **递增顺序** 排列
难度: Medium
题解代码
javascript
/**
* @param {number} n
* @param {number[]} primes
* @return {number}
*/
var nthSuperUglyNumber = function(n, primes) {
const dp = [0, 1]
const p = new Array(primes.length).fill(1)
for (i = 2; i <= n; i++) {
const min = Math.min(...[].slice.call(p).map((item, idx) => dp[item] * primes[idx]))
for (let i = 0, l = p.length; i < l; i++) {
if (dp[p[i]] * primes[i] === min) p[i]++
}
dp[i] = min
}
return dp[n]
};