【发布时间】:2016-01-13 07:34:17
【问题描述】:
最近在一次采访中我被问到这个问题:
以最小的时间复杂度将 k 个已排序的数组合并为一个大小为 n 的数组,每个数组具有 n 个元素。k。*
我给出了一个解决方案,使用大小为 k 的 minheap 来找到 k 个列表的顶部元素中的最小值。
这样时间复杂度会降到 - O(nklogk)。
但他并不相信。他想要一个时间复杂度为 O(nk) 的解决方案。
我在互联网上搜索过,但找不到解决方案。
【问题讨论】:
-
对于comparison sort,这是不可能的。否则,您可以使用计数排序或桶排序(例如)。
-
@shx2 我接受了你的回答,但是由于面试官问了我这个问题,我只是在这里等待更多的答案/cmets。
-
不确定它是否仍然相关,我想面试官可能会混淆
n。他很可能认为n是所有k列表中的元素数;在描述问题时,他提到n是每个列表的长度。
标签: algorithm sorting data-structures merge heap