描述
有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。
示例 1:
输入: k = 5
输出: 9
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/get-kth-magic-number-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析
在丑数的基础上改变了质数因子,还是丑数的解题思路。
class Solution {
public int getKthMagicNumber(int k) {
int[] ans = new int[k];
ans[0] = 1;
int[] key = new int[]{3,5,7};
int[] index = new int[]{0,0,0};
for (int i = 1; i < k; i++) {
int tmp = Integer.MAX_VALUE;
for (int j = 0; j < 3; j++) {
tmp = (int)Math.min(tmp,(long)ans[index[j]] * key[j]);
}
for (int j = 0; j < 3; j++) {
if (tmp == (long)ans[index[j]] * key[j]) {
index[j]++;
}
}
ans[i] = tmp;
}
return ans[k-1];
}
}