如果还不了解滑动窗口是什么的话可以先去百度或者leetcode上了解一下滑动窗口。该篇文章主要讲解固定长度的滑动窗口问题。相信我,学会该套路解决所有定长滑动窗口问题!!!话不多说,正题开始!在此先奉上定长滑动窗口的leetcode题单。注:该题单来自灵神,一位算法讲师,大家想要开始算法入门学习可以关注他的b站或leetcode账号。
分享丨【题单】滑动窗口与双指针(定长/不定长/至多/至少/恰好/单序列/双序列/三指针) - 力扣(LeetCode)
定长滑动窗口的一般套路:
定长滑动窗口的套路主要分为三步:
1. 入窗口
2.更新答案
3.出窗口
定长滑动窗口的代码模板:
int main() {
//固定长度为k的滑动窗口
//定义最终答案和窗口内需要维护的变量
int ans = 0;
//left为窗口左边界,right为窗口的右边界
for(int left = 0,right = 0;right<n;right++){
//入窗口,更新维护信息
//先形成长度为k的窗口 right到达k-1的时候说明第一个长度为k的窗口就形成了
if(right < k-1) continue;
//形成窗口后更新答案,一般求最大或者最小值,根据题目要求更新答案
//出窗口
//因为此时窗口的长度已经为k,下一次循环right++窗口的长度会变大,
// 所以需要先将窗口左边