最近在一次面试中,我被问到了这个问题:
将每个大小为n的k个排序数组合并成一个数组,使时间复杂度最小。
我提供了一个解决方案,使用大小为k的最小堆来查找k个列表顶部元素的最小值。
这样,时间复杂度将降至 - O(nklogk)。
但他并不满意。他想要一个时间复杂度为O(nk)的解决方案。
我在互联网上搜索过,但是没有找到解决方案。
最近在一次面试中,我被问到了这个问题:
将每个大小为n的k个排序数组合并成一个数组,使时间复杂度最小。
我提供了一个解决方案,使用大小为k的最小堆来查找k个列表顶部元素的最小值。
这样,时间复杂度将降至 - O(nklogk)。
但他并不满意。他想要一个时间复杂度为O(nk)的解决方案。
我在互联网上搜索过,但是没有找到解决方案。
[ [0], [9999999999999] ]
这样非常短的输入,它的表现如何?问题中没有任何指示表明您可以对值做出任何假设。此外,它仅适用于整数值。问题没有说明。如果它们是浮点数呢? - shx2
n
。他很有可能认为n
是所有k
个列表中元素的数量;而在描述问题时,他提到n
是每个列表的长度。 - Sidmeister