小编Ye *_*ang的帖子

python heapq合并的内部工作。如何在不生成列表的情况下对列表进行排序

heapq.merge()即使不生成列表,如何对列表进行排序?

不知道我说清楚了没有。
所以,这是从leetcodeSuper Ugly Number 问题提出的

还有这个python代码

class Solution(object):
    def nthSuperUglyNumber(self, n, primes):
        """
        :type n: int
        :type primes: List[int]
        :rtype: int
        """
        uglies = [1]
        def gen(prime):
            for ugly in uglies:
                yield ugly * prime
        merged = heapq.merge(*map(gen, primes))
        while len(uglies) < n:
            ugly = next(merged)
            if ugly != uglies[-1]:
                uglies.append(ugly)
        return uglies[-1]
Run Code Online (Sandbox Code Playgroud)

让我很难理解它。在我搜索了“yield”和“heapq”的概念后,我仍然没有在while循环中得到它,怎么merged知道它ugly in uglies>n不会小于uglies[n-1].

python heap

5
推荐指数
1
解决办法
5200
查看次数

标签 统计

heap ×1

python ×1