分析
这一题与丑数2的思路基本一致,参考csdn的分析。总结而言,是使用指针指示法。下一个丑数一定出自当前这组指针,然后判断哪些质数的指针要推进。
答案
class Solution:
def nthSuperUglyNumber(self, n: int, primes: List[int]) -> int:
res = [1]
ptr = [0] * len(primes)
for i in range(1, n):
next_ugly_numbers = [res[ptr[pi]] * primes[pi] for pi in range(len(primes))]
next_ugly_number = min(next_ugly_numbers)
res.append(next_ugly_number)
for pi in range(len(primes)):
if next_ugly_number == next_ugly_numbers[pi]:
ptr[pi] += 1
return res[n-1]