概念、理论
双指针是指遍历时同时有两个指针,通常有两种使用方式:
- 两个指针是同向而行,但是一个快一个慢,这样可以减少遍历的次数
- 两个指针是反向而行,从两端向中间遍历。
同向而行,通常是快慢指针,比如遍历链表,通常会用到快慢指针。
反向而行,通常是从两端向中间,比如遍历数组,找到中间位置。
例题
数组中找到不等于目标元素的个数,并且需要原地修改原数组。
可以用双指针,实际是将数组分成了两个区域,前面的是需要的如上题中不等于目标的元素,后面的是不需要的。
low指针作为前面区域的最后一个位置,fast指针作为遍历的指针,找到能放入目标数组的元素,就将low指针后移一位。 重点是找到能放入目标数组的元素。
可以看到快慢指针用到数组中,通常都是和原地修改有关。