我对这样一个例子的大O符号有点困惑(这不是一个真正的编程语言,只是一个简单的例子):
for each entry in arraylist1
for each entry in arraylist2
if condition met
remove element from arraylist2
即使这个代码有两个循环,我也不认为它是O(n ^ 2),因为对于每个条目,我可以删除n个元素,这将大大减少迭代次数。
当我已经处理或在给定条件下找到阵列上的元素但需要继续时,我通常会使用这种算法。
编辑:现在我想到,最糟糕的情况是只删除第一个循环的最后一次迭代中的所有元素,从而产生“真”O(n ^ 2)。