一、双指针
1.简介
1.1常用在数组或字符串中快速查找、匹配、排序或移动
1.2双指针即用两个变量表示下标,根据问题移动指针
1.3双指针往往和单调性、排序联系在一起。可以把O(n²)降到O(n)
2.双指针类型
2.1对撞指针
2.1.1:两个指针left,right分别指向第一个元素和最后一个元素,l指针不断递增,r不断递减。直到两个指针相撞或错开(l>=r),或满足其他要求的特殊条件为止
a.用于解决有序数组或字符串问题(常见于区间问题)
b.查找有序数组中满足某些约束条件的一组元素问题:二分查找、数字之和等问题
c.字符串反转问题:反转字符串、回文数、颠倒二进制等问题
2.1.2求解步骤
2.2快慢指针
2.2.1简介:
指的是从同一侧开始遍历序列,且移动步长一个快一个慢
称快指针r,满指针l,构成区间[l,r],l=1;r-0。初始时[l,r]=[1,0]表示空区间
两个指针以不同速度、不同策略移动,直到快指针移动到数组尾端、或者两指针相交或满足其他条件为止
2.2.2求解步骤
二、二分法
1.二分法简介
2.整数二分
通过值找到下标或分界点
2.1简介
2.2模板
3.浮点二分(了解)
4.二分答案(最常见)
4.1简介
4.2模板