双指针算法主要内容
一、基本思路
1、双序列
- 指针可能在同侧也可能在异侧
- i,j 指针还可能互相之间有限制
2、单序列
- 双侧移动,如快排算法
二、Java、C语言模板实现
//Java 模板实现
for (int i = 0, j = 0; i < n; i ++ ) {
while (j < i && check(i, j)) {
j ++ ;
}
// 具体问题的逻辑
}
// C语言实现,此处是yxc实现
for (int i = 0, j = 0; i < n; i ++ )
{
while (j < i && check(i, j)) j ++ ;
// 具体问题的逻辑
}
常见问题分类:
(1) 对于一个序列,用两个指针维护一段区间
(2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作
三、注意事项
- 常见问题分类:
(1) 对于一个序列,用两个指针维护一段区间
(2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作