单调递减队列是这么一个队列,它的头元素一直是队列当中的最大值,而且队列中的值是按照递减的顺序排列的。我们可以从队列的末尾插入一个元素,可以从队列的两端删除元素。 1.首先看插入元素:为了保证队列的递减性,我们在插入元素v的时候,要将队尾的元素和v比较,如果队尾的元素不大于v,则删除队尾的元素,然后继续将...
下面我们开始重头戏,单调队列的实现。 二、实现单调队列数据结构 观察滑动窗口的过程就能发现,实现「单调队列」必须使用一种数据结构支持在头部和尾部进行插入和删除,很明显双链表是满足这个条件的。 「单调队列」的核心思路和「单调栈」类似,push方法依然在队尾添加元素...
有了这些前提,就可以动手设计这道题使用的数据结构(单调队列)了,其精巧地满足了我们的需求。在这个问题里,使用的是一个双端队列。 在窗口建立(从读入第一个数到读入第size(窗口的大小)个数)和滑动的过程中,我们维护一个队列 ,它的行为和正常的队列一致,但是会自动淘汰那些不可能作为最小/大值询问结果的元素。...
DOA.c 菜鸡一枚 滑动窗口和单调队列经典例题: POJ 2823 【知识总结】滑动窗口详解一次搞懂!从经典滑动窗口到双向队列_一只酷酷光儿的博客-CSDN博客blog.csdn.net 发布于 02-21 0 分享收藏 举报 还没有评论 发布