编写一段程序来查找第 n 个超级丑数。
超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。
class Solution {
//多指针法
public int nthSuperUglyNumber(int n, int[] primes) {
int[] dp = new int[n];
int index = 0;
dp[index++] = 1;
int[] points = new int[primes.length];//指针数组
int[] tempValue = new int[primes.length];//存储计算的临时值
for(int i=1;i<n;i++){
int minvalue = Integer.MAX_VALUE;
for(int j=0;j<primes.length;j++){
int point = points[j];
tempValue[j] = dp[point]*primes[j];
minvalue = Math.min(minvalue,tempValue[j]);
}
for(int j=0;j<primes.length;j++){
if(minvalue==tempValue[j]){
points[j] = points[j]+1;
}
}
dp[index++] = minvalue;
}
return dp[n-1];
}
}