如果我有K个包含每个N个元素的已排序数组,例如:
我知道可以使用堆来合并它们,通过循环所有列表及其元素并将它们插入堆中,然后每次以O(KN * log(KN))的时间复杂度获取最小值。
我在网上查过,另一个常见的解决方案似乎是使用只有K个元素的最小堆,并将所有K个列表的第一个项目插入到堆中,然后取出最小的数并将指针移动到拥有该最小项的列表。
除了第二种方法具有更高效的内存需求(第二种情况下为O(K)),第二种方法是否在时间上更有效?
可选奖励分:是否存在比以上两种更好的算法?
[0, 1, 2]
[1, 6, 8]
[10, 11, 12]
我知道可以使用堆来合并它们,通过循环所有列表及其元素并将它们插入堆中,然后每次以O(KN * log(KN))的时间复杂度获取最小值。
我在网上查过,另一个常见的解决方案似乎是使用只有K个元素的最小堆,并将所有K个列表的第一个项目插入到堆中,然后取出最小的数并将指针移动到拥有该最小项的列表。
除了第二种方法具有更高效的内存需求(第二种情况下为O(K)),第二种方法是否在时间上更有效?
可选奖励分:是否存在比以上两种更好的算法?