指针的解题思路一般分为三类:
1.首尾指针:范围查找,比如二分搜索等
滑动窗口:指针处在数组同一方向,根据条件移动左右指针,用于获取范围和等
快慢指针: 多用于链表计算时,判断是否有环等
2.双指针
双指针在解答数组和链表等相关题目中经常用到。
链表中经常采用双指针中的快慢指针来判断链表是否有环、入环的第一个节点、链表的中间节点和删除链表倒数第N个节点等等。
数组(有序)中常采用双指针中的对撞指针和跟随指针来解答。
3.对撞指针
对撞指针通常是设置两个指针(例如 l 和 r)分别指向数组的第 0 个位置的元素和最后一个位置的元素,然后判断这两个指针指向的数字之和跟目标值的关系,进而决定是移动 l 还是 r来寻找数组中两个合适的元素。