Orion's Studio.

算法(32)-双指针回顾

2024/03/14

双指针

数组

通过两个指针在一个for循环下完成两个for循环的工作。

字符串

定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。

其实很多数组(字符串)填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。

链表

只需要改变链表的next指针的指向,直接将链表反转,而不用重新定义一个新的链表。

使用快慢指针(双指针法),分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。

N数之和

通过前后两个指针不算向中间逼近,在一个for循环下完成两个for循环的工作。

在三数之和的基础上再套一层for循环,依然是使用双指针法。

总结

一般是将降低一个阶数的复杂度,如将O(n^2)的时间复杂度,降为O(n)。

CATALOG
  1. 1. 双指针
    1. 1.1. 数组
    2. 1.2. 字符串
    3. 1.3. 链表
    4. 1.4. N数之和
  2. 2. 总结