1.本质其实就是借用上一次枚举的结果。
2.两个指针向同一个方向移动。
3.同向双指针的代码中存在二重循环,但是二重循环的时间复杂度不一定为O(n^2),因为数组中每个元素至多被遍历两回,所以滑动窗口的时间复杂度为O(n),空间复杂度为O(1)。
4.适用于每次枚举结果具有单调性的题目,例如正整数数组的子数组的和或乘积,子数组如果加一个元素就会导致和或乘积增大,如果减一个元素就会导致和或乘积减小。
5.常用的代码格式:
while 循环遍历右指针
右指针右移,向右再合并一个元素到子数组
while 固定右指针,循环便利左指针(满足要求或不满足要求二选一)
将子数组中最左侧的元素剔除
左指针右移
6.适用于一段连续元素的整体关系的问题。
7.适合最优解问题,不太适合求所有解的情况。