将元素添加到链表中被称为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)]
。
按索引排序:[(E2, 3), (E1, 5), (E3, 7)]
创建一个迭代器,并按3
进行迭代。
使用迭代器添加E2
。
将相同的迭代器前进2
(5 - 3
)。
添加E1
。
...
请注意,此算法有一个错误。修复它应该相对容易。
更新:只是注意到您的问题要简单得多。在您的情况下,只需创建一个迭代器,将其前进X
次,然后使用该迭代器一个接一个地添加元素。
关于java - Java:如何在链表中添加(在中间某处)多个元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11601138/