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 <= 1002 <=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]
};