【发布时间】:2012-06-24 04:31:51
【问题描述】:
你有 n 个已排序的链表,每个链表的大小为 n。链表引用 存储在一个数组中。什么是合并n个链接的有效算法 列表到单个排序的链表?
因为它们都已排序:
- 加入循环
- 检查所有已排序链表的第一个节点,并通过相互比较对它们进行排序。
- 继续到下一个节点并重复直到
null被命中。
这是最有效的方法吗?
【问题讨论】:
-
缺少假设:链表中的元素是相互连续的还是交错的?
{{1,2,3,5}, {4,7,9,11}}是否有效/无效?我是否有 3 个链表,每个链表包含 3 个元素? (澄清 n.) -
是的,每个链表都已经排序并且具有完全相同数量的元素..
-
那么交错也可以吗?
-
不,我认为它们在列表中是连续的。
-
关键字:“N-way merge”(对链表进行调整),例如stackoverflow.com/questions/5055909/algorithm-for-n-way-merge , stackoverflow.com/questions/2705366/… 应该是
O(N*K)时间。
标签: java list linked-list