首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

单调队列模拟-野牛程序员教少儿编程

单调队列模拟

目标:用单调递减队列滑动窗口最大值

问题:

数组:[4, 2, 12, 3, 8, 7]

窗口大小:3

模拟过程开始!

初始状态:

队列为空,窗口准备从左往右滑。

第一步:i = 0,数值 = 4

队列空,直接放进去。

队列:[4]

第二步:i = 1,数值 = 2

2 比队尾 4 小,不能干掉它,老老实实排后面。

队列:[4, 2]

第三步:i = 2,数值 = 12

来了个大哥!

比队尾 2 大 踢走

再比前面 4 大 继续踢走

队列空了,大哥自己进来

队列:[12]

滑动窗口[4,2,12]最大值是:12

第四步:i = 3,数值 = 3

3 比 12 小,排队

队列:[12, 3]

窗口[2,12,3]最大值还是:12

第五步:i = 4,数值 = 8

8 > 3 踢掉 3

8 < 12 进队

队列:[12, 8]

窗口[12,3,8]最大值是:12

第六步:i = 5,数值 = 7

7 < 8,直接进队

队列:[12, 8, 7]

但 12 对应的是 i = 2,已经滑出窗口(窗口是 i=3~5)

踢掉 12

队列剩下:[8, 7]

窗口[3,8,7]最大值是:8

最终输出的最大值列表是:

[12, 12, 12, 8]

可视化图(队列内容)

野牛程序员教少儿编程与信息学奥赛

宜宾市野牛网络科技有限公司专业微信小程序开发、网站建设、软件开发等

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O_d6nVm8dPCSrRx-fPhg6l9w0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券