前言:
对于滑动窗口,有长度固定的窗口,也有长度可变的窗口,一般是基于数组进行求解,对于一个数组中两个相邻的窗口,势必会有一大部分重叠,这部分重叠的内容是不需要重复计算的,所以我们可以通过相邻的窗口进行数据的延伸使用
1.固定窗口
1.定义

如上图所示,两个相邻的长度为4的窗口(图中红色部分),下一个窗口一定比前一个窗口少一个数据,或者是多一个数据

橘色为切换窗口时少的那个数据,黄色为切换窗口时多出来的那个数据,所以,可以直接沿用之前的数据,并且减去橙色的数据,加上黄色的数据,就是我们下一个窗口的值了,这就是滑动窗口的一个经典思路
2.例题解析:
给定一个数组num和两个整数k和target,请你返回长度为k且和大于target的子数组数目
public int partitionString(int[] num,int k,int target) {
if(num==null||num.length==0){
return 0;
}
int sum=0;

文章介绍了滑动窗口的概念,包括固定窗口和可变窗口的处理方式。固定窗口通常用于处理数组中的子数组问题,通过调整窗口的起始和结束索引来遍历数组。可变窗口则常使用双指针来实现,例如在字符串处理中查找特定条件的子串。文章提供了几个具体的LeetCode题目作为例子,展示了滑动窗口在解决实际问题中的应用。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



