代码类型:双指针
解释:在代码中有两个指针,各自有指向数据的位置,通过移动两个指针,进行判断与修改实现一些功能。
通常用于数组操作,有两种方式,一种是前后两指针,相向而行,通常这种做法会改变元素顺序;另一种方式是快慢两指针,同向而行,操作过程一般不会改变元素相对顺序,又称为滑动窗口。
双指针(相向指针)的常用题型:排序数据(包含正数和负数)平方按排序、删除指定元素
双指针(滑动窗口)的常用题型:满足连续和的最小区间数目、包含子序列的最小窗口
滑动窗口的主要步骤:
1.初始化变量,快指针、慢指针(一般慢指针先初始化,循环里满足条件再变化,快指针在循环中每次自增一),有时候需要搭配哈希表,用于记录一些数据,一般是当前滑动窗口存在的数据种类及个数;
2.for循环,循环变量是快指针,所以每次循环快指针就会自增。
3.循环体中第一步是统计快指针指向的数据(存入哈希,累加等);第二步是一个while循环或者if判断,这个循环用来尝试不断缩短滑动窗口,也就是慢指针增加,并更新当前的答案&#x