)
题目
有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。
示例 1:
输入: k = 5
输出: 9
使用dp + 指针
class Solution {
public int getKthMagicNumber(int k) {
int[] dp = new int[k];
dp[0] = 1;
int p1 = 0,p2 = 0,p3 = 0;
for(int i = 1;i < k;i++){
int num1 = dp[p1] * 3;
int num2 = dp[p2] * 5;
int num3 = dp[p3] * 7;
int min = Math.min(num1,Math.min(num2,num3));
if(num1 == min) p1++;
if(num2 == min) p2++;
if(num3 == min) p3++;
dp[i] = min;
}
return dp[k - 1];
}
}