【算法】滑动窗口 Sliding Window

滑动窗口 Sliding Window

基本概念:一般结合while循环用,滑动窗口是一种基于双指针的一种思想,两个指针指向的元素之间形成一个窗口。优点是减少了重复计算,减少时间复杂度。一般看到数组中的定长问题(比如说给你一个数组,让你求出以k为长度的最大的和或最小的和),或者找出最长子串就要想到用滑动窗口法。

分类:窗口有两类,一种是固定大小类的窗口,一类是大小动态变化的窗口。

举个例子
有一个数组,连续的3个为一组,取最大的和。普通的做法就如下图所示,但这样有一个问题,就是每次求和都要对3个数算2次加法,如果连续的10000个为一组,那每次算的加法次数就很多:
在这里插入图片描述
而滑动窗口法就是每次只用把出去的那个数减掉,再加上后面的那个数,一样的能求出连续3个的和,这样就减少了两个窗口重合部分的数相加的次数。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值