2025/11/12
滑动窗口的核心是通过维护一个动态调整的 “窗口”(连续子区间),用 O (n) 时间复杂度替代暴力枚举的 O (n²),避免重复计算。
其核心逻辑是用左右指针界定窗口范围,根据问题条件移动指针收缩或扩展窗口,同时实时更新窗口内的关键信息,最终找到满足条件的最优解或所有解。
常见应用场景包括求最长无重复子串、最小覆盖子串、长度固定的子数组最大和等,核心优势是高效利用已有计算结果,减少冗余操作,是处理线性数据连续子问题的核心技巧之一。
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
define MAXN 100001
class Solution {
public:
int minSubArrayLen(int target, vector
int i = 0;
int sum = 0;
int result = MAXN;
int subL = 0;
for (int j = 0; j < nums.size(); j++) {
sum += nums[j];
while (sum >= target) {
subL = j - i + 1;
result = min(result, subL);
sum = sum - nums[i];
i++;
}
}
return result == MAXN ? 0 : result;
}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/963654.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!