这个题我首先想到的,是上一题(70)写的,小顶堆的方法,直接替换哪个factor的数组为primes,但是提交的时候报错,所以只好看解析,怎么用三指针实现.代码如下
/*
* @lc app=leetcode.cn id=313 lang=javascript
*
*
*/
// @lc code=start
/**
* @param {number} n
* @param {number[]} primes
* @return {number}
*/
var nthSuperUglyNumber = function (n, primes) {
let p = new Array(primes.length).fill(0);
let ans = 1;
let data = [1];
while (data.length < n) {
ans = data[p[0]] * primes[0];
//// 内层循环1:计算当前 指针指向的丑数*指针对应的质因子
for (let i = 0; i < primes.length; i++) {
ans = Math.min(ans, primes[i] * data[p[i]])
}
// 内层循环2:找到选出的res[i]对应的指针,把指针往前移
for (let i = 0; i < primes.length; i++) {
if (ans === primes[i] * data[p[i]]) {
p[i]++
}
}
data.push(ans)
}
return ans;
};
// @lc code=end