您的位置:首页 > 其它

LeetCode 313 Super Ugly Number

2016-04-20 18:06 363 查看
Write a program to find the nth super ugly number.

Super ugly numbers are positive numbers whose all prime factors are in the given prime list
primes
of
size
k
. For example,
[1,
2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32]
is the sequence of the first 12 super ugly numbers given
primes
=
[2,
7, 13, 19]
of size 4.

Note:

(1)
1
is a super ugly number for any given
primes
.

(2) The given numbers in
primes
are in ascending order.

(3) 0 <
k
≤ 100, 0 <
n

106, 0 <
primes[i]
<
1000.

解法一:具体思路和LeetCode 264 Ugly Number II的解法二一样

public int nthSuperUglyNumber(int n, int[] primes) {
int[] nums = new int
;
nums[0] = 1;
int[] index = new int[primes.length];
int cout = 1;
while (cout < n) {
int minNum = Integer.MAX_VALUE;
for (int i = 0; i < primes.length; i++) {
minNum = Math.min(nums[index[i]] * primes[i], minNum);
}
for (int i = 0; i < primes.length; i++) {
if (nums[index[i]] * primes[i] == minNum) index[i]++;
}
nums[cout++] = minNum;
}
return nums[n - 1];
}


根据leetcode的提示,这个题目是可以使用heap的,可是对heap的操作又不熟悉,所以,这个算法暂时作罢。以后如果有更简洁的算法,再补上。

Math Heap

Hide Similar Problems
(M) Ugly Number II
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: