Skip to content

⚠️ Important Notice

This post was last updated on: which was . Please pay attention to its timelines.

概念、理论

双指针是指遍历时同时有两个指针,通常有两种使用方式:

  • 两个指针是同向而行,但是一个快一个慢,这样可以减少遍历的次数
  • 两个指针是反向而行,从两端向中间遍历。

同向而行,通常是快慢指针,比如遍历链表,通常会用到快慢指针。

反向而行,通常是从两端向中间,比如遍历数组,找到中间位置。

例题

数组中找到不等于目标元素的个数,并且需要原地修改原数组。

可以用双指针,实际是将数组分成了两个区域,前面的是需要的如上题中不等于目标的元素,后面的是不需要的。

low指针作为前面区域的最后一个位置,fast指针作为遍历的指针,找到能放入目标数组的元素,就将low指针后移一位。 重点是找到能放入目标数组的元素。

可以看到快慢指针用到数组中,通常都是和原地修改有关

上一次更新: