【发布时间】:2015-05-25 23:35:14
【问题描述】:
我有两个已排序的链表,需要合并它们。
l1 = [a] -> [b] -> [c]
l2 = [b] -> [f]
l1plus2 = [a] -> [b] -> [c] -> [f]
这是什么顺序?
【问题讨论】:
-
请编辑您的帖子以解释“订单”是什么意思。到目前为止的答案假设“时间复杂度”......但目前还不清楚是否符合您的目标。
我有两个已排序的链表,需要合并它们。
l1 = [a] -> [b] -> [c]
l2 = [b] -> [f]
l1plus2 = [a] -> [b] -> [c] -> [f]
这是什么顺序?
【问题讨论】:
大概是升序。 :) 开玩笑。
如果您的意思是“数量级”,则以下解决方案将是 O(m+n) 或 O(max(m,n)),其中 m 是 l1.length,n 是 l2.length。
算法:保留一个指向每个链表的指针,逐个遍历它们,然后添加两个元素中较小的一个。如果元素相同,则添加一次并步进两个指针。
【讨论】: