java - 在 O(1) 中将链表添加到另一个链表

标签 java data-structures linked-list

两个链表,大小为m,r,想在第二个链表头后插入第一个链表节点,时间复杂度为O(1)方法。

这对我来说真是一个有趣的难题。每次想办法,时间复杂度是O(m+r)

我需要一些提示来解决这个问题。我在这个问题上付出了无用的努力。

编辑:

让我分享一下我目前的情况:

  1. 创建一个新的链表
  2. 添加第二个列表的头部
  3. 仍然是 O(1)
  4. 添加第一个列表的所有节点
  5. 变成 (n)
  6. 添加第一个列表中的其余节点

  7. 成为另一个(n-1)

更新:

你怎么看这件事?我在这里问完后直接受到启发:) enter image description here

最佳答案

如果您有两个单向链表并且还没有第一个链表的尾部,则这仅在 O(n) 中是可能的。如果你有尾部,你只需让它指向第二个列表的头部......

编辑:第二个列表头指向第一个列表的头。持有对第二个列表的第二个节点的引用。迭代第一个列表 - 如果您没有开始的尾部引用,这也是 O(n) - 并使该尾部指向第二个列表的原始第二个元素。

关于java - 在 O(1) 中将链表添加到另一个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901862/

相关文章:

java - 这个链表是循环实现的吗?

java - 根据 map 中的优先级对列表进行排序

java - Java 的 LinkedList 是否优化为在必要时反向执行 get(index)?

c - 为什么我销毁列表后尾部仍然指向 Something 而不是指向 NULL

c++ - Int 值急剧变化和段错误

java - 只听一次音量键按钮

java - HibernateInterceptor和proxyTargetClass有什么用

java - Android - 动态gridview(多列绑定(bind)行)

java - 链表插入使用头部插入

java - JTDS 驱动程序 - 连接池与连接池