思路
来源:leetcode-cn.com/problems/ge…
用数组 res 存储 第 [i] 个数的值 映射的各项。
res[0] = 1
走循环,下一个数,小于 currentIndex 的所有 index 的值,全部轮询一遍,
拿到最小的 " * 3 " 或者 " * 5 " 或者 " * 7 "
赋值给 res currentIndex
把 res[n - 1] 返回即可
时间已经够用了,教程里还有更近两步的优化,感兴趣可以移步。
代码
/**
* @param {number} k
* @return {number}
*/
var getKthMagicNumber = function(k) {
let res = [1];
for (let i = 1; i < k; ++i) {
let min = Number.MAX_VALUE;
for (let j = 0; j < i; ++j) {
if (res[j] * 3 > res[i - 1]) {
min = Math.min(min, res[j] * 3);
}
if (res[j] * 5 > res[i - 1]) {
min = Math.min(min, res[j] * 5);
}
if (res[j] * 7 > res[i - 1]) {
min = Math.min(min, res[j] * 7);
}
}
res[i] = min;
}
return res[k - 1]
};