c语言实现滑动平均_常见编程模式之滑动窗口

本系列旨在介绍编程题中最常见的 16 种模式[1]。对于每一种模式会介绍其基本原理,应用场景以及经典的例题。

1. 滑动窗口(Sliding Window)

基本原理及应用场景

滑动窗口模式指对一个给定的数组或链表以特定的窗口大小进行所需操作,例如找出只包含 1 的最长子数组。滑动窗口一般从最左边第一个元素开始,每次向右移动一个元素,并根据要解决的问题调整窗口的长度。某些情况下,窗口的大小不需要调整,而其他情况下则需要增大或减小窗口大小。

10e134cc5309cf904ff7f329a916ee39.png

在以下场景中,我们可能会用到滑动窗口:

  • 问题的输入是一个「线性数据结构」,例如链表、数组或字符串
  • 问题的目标是找出「最长/最短」子串、子数组或是目标值
  • 普通(暴力)解法的时间复杂度相当高

经典例题

下面给出三道不同难度的通过滑动窗口求解的经典例题:

643. 子数组最大平均数 I(Easy)

给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值