一、双指针
双指针主要用于遍历数组,两个指针指向不同的元素,互相协同,一般来说都在同一数组中。
二、分类
根据问题的不同,指针的移动方向也会不同,可分为两种情况:
- 遍历方向相同且不会相交
这种情况一般用于解决对数组的某区间进行搜索,也称为滑动窗口问题。 - 遍历方向相反且数组本身有序
这种情况一般用于元素的搜索
应用可分为:
- 两数和问题
- 归并两个有序数组问题
- 快慢指针问题
- 滑动窗口问题
三、关于指针的基础回顾
- const后跟int,值不可改,指针可改
const int * p2 = &x
- const后跟指针p3前,值可改,指针不可改
int * const p3 = &x
- const后跟int和指针p4,值可改,指针不可改
const int * const p4 = &x
*
左结合,故为返回类型为指针的函数
int * function(){}
( )
把*
括在里面,与function
结合,故为返回;类型为函数的指针
int func2(int a,int b){}
int (*function)(int,int) = func2;