void fixedSlidingWindow(vector<int>& nums, int k) {
int n = nums.size();
int sum = 0;
for (int i = 0; i < k; i++) {
// 计算初始窗口
}
ans = xx; // 初始窗口答案
// 窗口从下标 1 开始滑动直到最后
for (int i = 1; i <= n - k; i++) {
int l = nums[i - 1];
int r = nums[i + k - 1];
// 减去左边界,加上右边界
sum += r - l;
// 更新最终答案
ans = xx;
}
return ans;
}
不定长滑动窗口
初始化窗口左端点、答案值为 0
从 0 开始遍历窗口右端点
根据题目的要求,移动左端点
在每次右端点遍历最后,更新答案
int nonSlidingWindow(vector<int>& nums) {
int n = nums.size();
int left = 0, ans = 0;
int sum = 0;
for (int right = 0; right < n; right++) {
sum += nums[right];
while (// 根据题目的要求 移动左端点) {
sum -= nums[left];
left++;
}
ans = max(right - left + 1, ans);
}
return ans;
}