滑动窗口
题目特点 要求找到满足某些条件的子序列 比如最长 最短 等
滑动窗口思路(寻找最长)
核心:左右指针(L R)在起始点,R向右逐位滑动循环
每次滑动过程中
如果窗内元素满足条件,R向右扩大窗口,并更新最优结果。
如果窗内元素不满足条件,L向右缩小窗口
-----R到达结尾
滑动窗口思路(寻找最短)
核心:左右指针(L R)在起始点,R向右逐位滑动循环
每次滑动过程中
如果窗内元素满足条件,L向右缩小窗口,并更新最优结果。
如果窗内元素不满足条件,R向右扩大窗口
-----R到达结尾
解题模板
最长:
初始化left,right,result,bestResult
while(右指针没有到结尾){
窗口扩大,加入right对应元素,更新当前result
while(result不满足要求){
窗口缩小,移除left对应元素,left右移
}
更新最优结果bestResult
right++
}
最短:
初始化left,right,result,bestResult
while(右指针没有到结尾){
窗口扩大,加入right对应元素,更新当前result
while(result满足要求){
更新最优结果bestResult
窗口缩小,移除left对应元素,left右移
}
right++
}