力扣刷题之刷题技巧总结–双指针技巧
双指针的分类
双指针的理解
快慢指针、左右指针
快慢指针
快慢指针解决链表问题尤其有效
一般看到链表的题都要下意识地想起双指针
判断链表是否有环
一个快指针,一个慢指针
快指针一次进两步,慢指针一次进一步
如果链表是没有环的话,快指针就是会走到链表的尽头,指向空(NULL)
而如果链表是有环的话,快指针最后就会比慢指针走快一圈,然后相遇。
已知链表有环,找到链表的环的起点
快指针与慢指针相遇之后,让慢指针重新回到头节点,再次相遇的时候,慢指针所对应的位置就是环的起点
原理:
寻找链表的中点
快指针一次进两步
慢指针一次进一步
当快指针走到头的时候
慢指针的指向就是链表的中点(奇数)
偶数就是中点偏右
有序数组/链表去重
只要是有序的数组,首先就要先想到双指针
力扣题号:26.去除排序数组中的重复项
因为涉及到原地修改,所以不能用哈希表和栈等结构去做
因此我们得用快慢指针,让快指针探路,慢指针待命
通过判断快指针与慢指针对应的值来完成遍历
代码: