双指针总结
数组
在数组:就移除个元素很难么?中,原地移除数组上的元素,我们说到了数组上的元素,不能 真正的删除,只能覆盖。
一些同学可能会写出如下代码(伪代码):
for (int i = 0; i < array.size(); i++) {
if (array[i] == target) {
array.erase(i);
}
}
这个代码看上去好像是 O(n)的时间复杂度,其实是 O(n^2)的时间复杂度,因为 erase 操作也是 O(n)的操作。
所以此时使用双指针法才展现出效率的优势:通过两个指针在一个 for 循环下完成两个 for 循环的工作。