小编Nit*_*ang的帖子

Java LinkedList:从中移除到

我在java.util.LinkedList逻辑上有一个包含数据

1 > 2 > 3 > 4 > 5 > null
Run Code Online (Sandbox Code Playgroud)

我想删除2到4之间的元素,并使其LinkedList像这样

1 > 5 > null
Run Code Online (Sandbox Code Playgroud)

实际上,我们应该能够以O(n)复杂度实现这一点,考虑到你必须将链断开为2并在一次操作中将它连接到5.

在Java LinkedList中,我无法找到任何允许在单个O(n)操作中使用from和to从链表中删除链的函数.

它只为我提供了单独删除元素的选项(使每个操作O(n)).

无论如何,我只需一次操作即可实现这一目标(无需编写自己的列表)?

这里提供的一个解决方案使用单行代码解决了问题,但不是单个操作. list.subList(1, 4).clear();

问题更多的是算法和性能.当我检查性能时,这实际上比逐个删除元素慢.我猜这个解决方案实际上并没有删除o(n)中的整个子列表,而是为每个元素逐个删除(每次删除O(n)).还要添加额外的计算来获取子列表.

以ms为单位的平均1000000次计算:

没有sublist = 1414
使用提供的子列表解决方案:= 1846**

java linked-list list

3
推荐指数
1
解决办法
1226
查看次数

标签 统计

java ×1

linked-list ×1

list ×1