【发布时间】:2020-05-30 16:44:33
【问题描述】:
我在 Java 中有两个 LinkedLists,我想将一个列表的所有元素添加到另一个列表中。在 O(1) 时间内是否有本地方法可以做到这一点?我知道需要做的就是将第一个列表的最后一个指针设置为第二个列表的第一个,但似乎没有本地方法可以做到这一点。
另外,为了增加它的复杂性,我需要一种方法来将列表添加到另一个列表而不是附加它。我有列表 A 和 B,我需要将 B 的所有元素添加到列表 A。我不能只将 A 的元素添加到 B 的末尾,因为我想列出要修改的 A。
有没有办法做到这一点而不必实现我自己的LinkedList?
【问题讨论】:
-
但是到达第一个列表的末尾需要 O(n) 对吗?
-
不,这是不可能的。我的意思是,也许您可以使用反射来访问和操作私有内部数据结构,但不要这样做。如果你需要这个性能特性,写你自己的链表。
-
@Tyler
LinkedList是双链表,getLast()是O(1),可以看源码。 -
@KarolDowbecki 谢谢
-
这(有点)以前被问过。 “在恒定时间内连接两个 java.util.LinkedList” 看这里:stackoverflow.com/questions/38303986/…
标签: java