【发布时间】:2012-08-04 18:18:34
【问题描述】:
我可以在文档中看到:
java.util.AbstractList#removeRange
它需要二次时间:
这个实现得到一个位于fromIndex之前的列表迭代器, 并反复调用 ListIterator.next 后跟 ListIterator.remove 直到整个范围被删除。注意:如果 ListIterator.remove 需要线性时间,这个实现需要二次时间。
但是为什么?代码:
protected void removeRange(int fromIndex, int toIndex) {
ListIterator<E> it = listIterator(fromIndex);
for (int i=0, n=toIndex-fromIndex; i<n; i++) {
it.next();
it.remove();
}
}
对我来说似乎是线性的......但我必须是错的,因为我是这种算法方面的新手。请帮助我理解它。
【问题讨论】:
标签: java collections big-o time-complexity