基础算法 之 滑动窗口

1. 介绍

滑动窗口算法在《挑战程序设计竞赛》一书中被称为 “虫取法”
这种称呼非常生动形象,
因为滑动窗口的 两个指针移动的过程 与虫子爬动的过程相似:
后脚不动,前脚移动;前脚不动,后脚移动
同时虫子的身体表示 元素连续

通常用于解决 “最短/最长子数组” 、“最短/最长连续数” 等。
核心点:最、连续

2. 代码模版

        // 定义结果
        long res = 0L;
        int n = nums.length;
        // 滑动窗口 需 满足的条件
        long sum = 0;
        // 枚举右指针
        int left = 0;
        for (int right = 0; right < n; right++) {
            sum += nums[right];
            // 满足条件 到 不满足条件
            //  或 不满足条件  到 满足条件
            while(sum * (right - left + 1)  >= k){
                // 收缩左指针
                sum -= nums[left++];
            }
            res += (right - left + 1);
        }
        return res;

3. 参考

滑动窗口【基础算法精讲 03】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容