有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。力扣原文
示例 1:
输入: k = 5
输出: 9
题目的大体意思,找到一个长度为5的list,并返回最后一个,且list中的每一项的一个因子都在3、5、7中。根据题目给出的前五个找出的规律,根据题目list的第一个必然是1,1就是下一个数的第二个素因子,13、15、1*7,取三个结果中的最小值为下一个数,同时对应的第一个素因子指向得出的结果,如果结果有相同的,那么对应的素因子同时都向后移一位,依次类推,直到找到第K个数
var getKthMagicNumber = function (k) {
let p3=p5=p7=0 ;
let list = [1];
for (let m = 0; m < k-1; m++) {
let val3=list[p3]*3,val5=list[p5]*5,val7=list[p7]*7;
let min=Math.min(val3,val5,val7);
list.push(min)
val3===min&&p3++
val5===min&&p5++
val7===min&&p7++
}
return list[list.length-1]
};