Super Ugly Number
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.
Example
Input: n = 12, primes = [2,7,13,19]
Output: 32
Explanation: [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 is a super ugly number for any given primes.
The given numbers in primes are in ascending order.
0 < k ≤ 100, 0 < n ≤ 106, 0 < primes[i] < 1000.
The nth super ugly number is guaranteed to fit in a 32-bit signed integer.
Solution
class Solution(object):
def nthSuperUglyNumber(self, n, primes):
"""
:type n: int
:type primes: List[int]
:rtype: int
"""
num_list = [1]
down_list = [0] * len(primes)
while len(num_list)<n:
min_num = 10000000000
for i in range(len(primes)):
while primes[i]*num_list[down_list[i]]<=num_list[-1]:
down_list[i]+= 1
min_num = min(min_num,primes[i]*num_list[down_list[i]])
num_list.append(min_num)
return num_list[-1]
这里的min_num是参考了给出值的范围,其实可以在内层循环里新建一个数组存储当前的最小值,最后再找出