📜  门|门模拟 2017 |第 40 题

📅  最后修改于: 2021-09-24 05:46:39             🧑  作者: Mango

考虑均匀分布在 k 个堆栈中的 n 个元素。在每个堆栈中,它的元素按升序排列(min 在每个堆栈的顶部,然后向下增加)。

给定一个大小为 n 的队列,我们必须将所有 n 个元素按递增顺序排列。最著名的算法的时间复杂度是多少?
(A) O(n logk)
(B) O(nk)
(C) O(n 2 )
(D) O(k 2 )答案:(一)
解释:

在 nlogk 中,可以通过创建大小为 k 的最小堆并添加所有堆栈的所有顶部元素来完成。提取 min 后,从我们获得第一个最小值的堆栈中添加下一个元素。
时间复杂度 = O(k)(用于创建大小为 k 的堆)+ (nk)log k(插入到堆中)。
这个问题的测验