双指针
双指针算法
主要内容
双指针有很多种,第一类是两个指针在不同的序列上,比如归并排序的区间合并问题,还有一类是两个指针指向同一序列的不同位置来解决一些问题。主要遇到的是第二类。
针对第二类,一般可套用下面的模板。双指针实质上是根据问题的某种特性,比如单调性,来对朴素算法进行优化。

经典例题
A+B
1 | |
最长连续不重复子序列
j表示以i结尾的
最长连续不重复子序列的最左下标。这里要抓住问题的
单调性:当i向右走的时候,j只能向右走或者原地不动。
1 | |
双指针有很多种,第一类是两个指针在不同的序列上,比如归并排序的区间合并问题,还有一类是两个指针指向同一序列的不同位置来解决一些问题。主要遇到的是第二类。
针对第二类,一般可套用下面的模板。双指针实质上是根据问题的某种特性,比如单调性,来对朴素算法进行优化。

1 | |
j表示以i结尾的最长连续不重复子序列的最左下标。
这里要抓住问题的单调性:当i向右走的时候,j只能向右走或者原地不动。
1 | |