您的位置:首页 > 其它

LeetCode 313. Super Ugly Number

2016-03-29 23:24 323 查看

思路

利用ugly,pointer,prime三个数组存储当前找到的所有ugly,同时存储下次可能是最小的数:





算法实现

public int nthSuperUglyNumber(int n, int[] primes) {
int[] pointer = new int[primes.length];
Arrays.fill(pointer, 0);
int ugly[] = new int
;
ugly[0] = 1;
for(int i = 1; i < n; i++){
int min = Integer.MAX_VALUE;
int minIndex = 0;
for(int j = 0; j < primes.length; j++){
if(ugly[pointer[j]] * primes[j] < min){
min = ugly[pointer[j]] * primes[j];
minIndex = j;
}else if(ugly[pointer[j]] * primes[j] == min){
pointer[j]++;
}
}
ugly[i] = min;
pointer[minIndex]++;
}
return ugly[n - 1];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: