单调队列的基础数据结构是什么
时间: 2023-08-28 13:06:51 浏览: 118
单调队列的基础数据结构是双端队列(deque)。双端队列是一种具有队列和栈的性质的数据结构,支持在队列的头部和尾部进行插入和删除操作。单调队列是在双端队列的基础上进行了一些限制,使得队列中的元素单调递增或单调递减。
单调队列常用于解决滑动窗口问题,通过维护一个单调递增或单调递减的队列,可以在 O(1) 的时间内获取当前窗口中的最大值或最小值。在实际应用中,可以使用双端队列来实现单调队列,维护队列中元素的单调性,并按照一定的规则进行插入和删除操作。
以下是 Python 中使用 deque 实现单调队列的示例代码:
```python
from collections import deque
# 定义一个单调递增队列
queue = deque()
# 插入一个元素,并保持队列的单调性
def push(num):
while queue and queue[-1] < num:
queue.pop()
queue.append(num)
# 弹出队列头部的元素
def pop(num):
if queue and queue[0] == num:
queue.popleft()
# 获取队列中的最大值
def get_max():
return queue[0]
```
上述代码中,push() 方法用于插入一个元素,并保持队列的单调递增性;pop() 方法用于弹出队列头部的元素,如果弹出的元素恰好是当前窗口中的最大值,则需要将其从队列中删除;get_max() 方法用于获取当前窗口中的最大值,即队列头部的元素。通过维护单调递增队列,可以在 O(1) 的时间内获取当前窗口中的最大值。
阅读全文