经典算法模板
About 1 min
1. 滑动窗口算法
1. 应用场景
关键词:满足xxx条件(计算结果、出现次数、同时包含)、最长/最短、子串/子数组/子序列
2. 使用思路
1. 寻找最长
核心:左右双指针(L,R)在起始点,R向右逐位滑动循环
每次滑动过程中
如果:窗内元素满足条件,R向右扩大窗口,并更新最优结果
如果:窗内元素不满足条件,L向右缩小窗口
R到达结尾
2. 寻找最短
- 核心:左右双指针(L,R)在起始点,R向右逐位滑动循环
- 每次滑动过程中
- 如果:窗内元素满足条件,L向右缩小窗口,并更新最优结果
- 如果:窗内元素不满足条件,R向右扩大窗口
- R到达结尾
3. 模板代码
寻找最长的模板
初始化1eft,right,result,bestResult while(右指针没有到结尾){ 窗口扩大,加入right对应元素,更新当前result while(result不满足要求){ 窗口缩小,移除1eft对应元素,1eft右移 } 更新最优结果bestResult right++; } 返回bestResult;寻找最短的模板
初始化left,right,result,bestResult while(右指针没有到结尾){ 窗口扩大,加入right对应元素,更新当前result while(result满足要求){ 更新最优结果bestResult 窗口缩小,移除1eft对应元素,1eft右移 } right++; } 返回bestResult;
