Skip to content
On this page

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

技术文档集合