双指针总结:
1.快慢指针(常用于数组、字符串、链表):
在数组里:定义slow和fast指针,这两个指针的起始点都是相同的,在while循环里(一般循环中数组里结束的条件是fast<length)
在链表里:①快慢指针再同个位置,同时出发,快指针走2步,慢指针走1步。在while循环的条件是(fast!=null&&fast.next!=null)————【力扣141环形链表】
②快慢指针再同一位置,快指针走x步后,快慢指针再同时走,走的速度都是一样的,每次都1步。在while循环的条件是(fast.next!=null)————【力扣19删除倒数N个结点】
2.左右指针(常用于数组、字符串):定义left和right指针,这两个指针的起始点是数组/字符串的头和尾,在while循环里(一般循环结束的条件是left<right)满足特定条件1:left++ ,right--;满足特定条件2:left++; 满足特定条件3:right--;
题目:
Day1:26(快慢指针)删除有序数组中的重复项
Day1:27(快慢指针)移除元素
Day10:125(左右指针)验证回文串
Day11:141(快慢指针)环形链表
Day14:202(快慢指针)快乐数
Day17:234(快慢指针/左右指针)回文链表
Day23:283(快慢指针)移动零
Day38:917(左右指针)仅仅反转字母
Day44:15(左右指针)三数之和
Day45:16(左右指针)最接近的三数之和
Day46:18(左右指针)四数之和
Day47:19(快慢指针)删除链表的倒数第 N 个结点
Day50:11(左右指针)盛最多水的容器
Day51:142(快慢指针)环形链表 II
Day58:6027(左右指针)统计数组中峰和谷的数量
Day58:6028(左右指针)统计道路上的碰撞次数
Day89:942(左右指针)增减字符串匹配 (与贪心算法的结合)