Java:如何在链表中添加(中间某处)多个元素?

标签 java linked-list insertion

已知向链表添加元素的时间复杂度为 O(1)。

但是,将其添加到位置 X 的复杂度为 O(X) 如果我想在这个位置添加 R 元素,总运行时间将为 O(R*X)。

但必须有一个 O(X+R) 解。

问题是如何在java中执行O(R+X)?

最佳答案

您有一个对 (element, X) 的列表,其中 X 是索引,element 是您要放入的项目那个索引。按 X 对此列表进行排序,并使用 Iterator 逐个添加元素。这是一个例子:

您的输入是:[(E1, 5), (E2, 3), (E3, 7)]

  1. 按索引排序:[(E2, 3), (E1, 5), (E3, 7)]

  2. 创建一个迭代器并将其前进 3

  3. 使用迭代器添加 E2

  4. 将同一迭代器前进 2 (5 - 3)。

  5. 添加E1

  6. ...

请注意,该算法有一个单数错误。修复它应该相对容易。

更新:刚刚注意到你的问题要简单得多。在您的情况下,只需创建一个迭代器,将其前进 X 次,然后使用该迭代器一一添加元素。

关于Java:如何在链表中添加(中间某处)多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11601138/

相关文章:

Java 枚举与迭代器

c - C语言从链表任意位置删除元素

java - 在 Java 中,如果我将方法 arg 作为 myMethod(myObjectReference) 或 myMethod(new MyObject) 传递,会有什么区别?

java - 使用 Spring Security 使 JSF 资源可公开访问

c - 在树中列出?

c - 在链表中搜索一个值

java - 尝试插入 SQLite 时出现 NullPointerException - Android

r - 将命名项添加到命名列表-保证追加到列表末尾?

algorithm - 非二叉树搜索和插入

java - 调用 intent 以使用 Camera2 拍摄照片