将元素添加到链表中被称为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
将相同的迭代器前进25 - 3)。
添加E1
...


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

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

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

10-10 21:45