数组双指针
数组双指针分为两类:
- 左右双指针:左指针在最左侧,右指针在最右侧,它们相向而行
- 快慢双指针:在单链表中经常使用fast、slow指针去判断链表中是否成环、单链表的终点、单链表倒数第k个结点等;同向而行;快指针在前面跑,慢指针在后面追;
- 特例:背向而行–回文串
1、快慢指针技巧,原地修改数组
分析:
也可直接使用数组删除–代价是复杂度高
高效率----双指针
概述:
fast起到一个探路的作用:fast每找到一个不同的元素,然后就将元素赋值给slow,让slow往前走一步,维护了这个数组中的元素没有重复的;
遍历完整个数组之后,0-slow就是需要的结果,将整个长度返回即可。
框架:
1、定义快慢指针—名为指针(实际是int类型代表数组的下标)
2、fast提前进行向前面走去、slow在后面将fast寻找的不重复的数进行存储
题目
int removeDuplicates(int* nums, int numsSize){
int fast