wordpress网站500错误,flash可以用来制作网页吗,开发一款app成本,卡一卡二三免视频【算法方法总结三】滑动窗口的一些技巧和注意事项
【算法方法总结一】二分法的一些技巧和注意事项【算法方法总结二】双指针的一些技巧和注意事项【算法方法总结三】滑动窗口的一些技巧和注意事项 【滑动窗口】 数组的和 随着 右边指针 移动一定是 非递减 的#xff0c;就是 …【算法方法总结·三】滑动窗口的一些技巧和注意事项
【算法方法总结·一】二分法的一些技巧和注意事项【算法方法总结·二】双指针的一些技巧和注意事项【算法方法总结·三】滑动窗口的一些技巧和注意事项 【滑动窗口】 数组的和 随着 右边指针 移动一定是 非递减 的就是 单调不能包含负数 暴力解法 时间复杂度O(n^2)滑动窗口 时间复杂度O(n)数组不是单调的话不要用 滑动窗口考虑用 前缀和前缀和很简单就放此章一块讲了所谓滑动窗口就是不断的调节子序列的起始位置和终止位置从而得出我们要想的结果将O(n^2)的暴力解法降为O(n)使用了双指针机制left 和 right 指针维护窗口边界初始均为 0外层循环用 right 扩大窗口内层循环用 left 缩小窗口 滑动窗口的使用条件 数组的和 随着 右边指针 移动一定是 非递减 的就是 单调 数据连续性需要 数组单调 / 字符串的连续子序列问题。存在重复计算暴力解法中存在冗余计算窗口滑动可复用部分结果。窗口状态可维护窗口内的状态如字符频率、和可通过指针移动快速更新。时间复杂度优化需求通常将时间复杂度从 O(n²) 优化至 O(n)。
实现滑动窗口应确定三点
1窗口内 是什么2如何 移动 窗口的 起始位置3如何 移动 窗口的 结束位置 滑动窗口模板
//外层循环扩展右边界内层循环扩展左边界
int l 0;
for (int r 0 ; r n ; r) {//当前考虑的元素while (l r check()) {//区间[left,right]不符合题意//扩展左边界}//区间[left,right]符合题意统计相关信息
}相关力扣题
相关解法见【算法题解答·三】滑动窗口
3.无重复字符的最长子串
438.找到字符串中所有字母异位词
209.长度最小的子数组 【前缀和】
前缀和 的思想是 重复利用 计算过的 子数组之和从而降低区间查询需要累加计算的次数 【滑动窗口】和【前缀和】的选择
特性
维度滑动窗口前缀和核心机制双指针 动态调整 窗口边界预处理 数组的累积和数据特性处理 连续子序列 问题快速计算 任意区间和操作方向单向滑动通常右指针主导静态存储支持 任意区间 查询
选择策略 优先用滑动窗口 – 需要处理连续子序列的最值问题 – 数据满足单向滑动条件如均为正数 优先用前缀和 – 需要快速计算区间和尤其是多次查询 – 数据包含负数或需要统计特定区间性质如奇偶性