java在O(n)时间内遍历LinkedList并删除k个元素
我正在使用Java的LinkedList
,据我所知,没有LinkedList.next(int);
,但有ListIterator.next()
,它通过LinkedList.listIterator()
发挥作用。然而,正如我所想:使用ListIterator
遍历元素(这需要O(n)个时间)将在删除所有元素后失败(对删除本身进行一个固定时间操作,但O(n)到达元素)
正在尝试删除一些k<;=n元素的简单方式,类似于:
if (list.get(++index).equals(elementToRemove))
{
list.remove(index);
}
是一个O(n^2)操作,因为每个nget()
都是O(n)
有没有办法在线性时间内遍历LinkedList
并删除应该删除的元素
# 1 楼答案
如果你不关心就地处理,你可以使用
函数,然后遍历该表,只向新列表中添加所需的项
# 2 楼答案
使用^{} :