队列求滑动窗口中最大值中的最小值的代码
时间: 2024-05-05 16:23:01 浏览: 13
以下是使用双端队列实现求滑动窗口中最大值中的最小值的代码:
```python
from collections import deque
def min_of_max_sliding_window(nums, k):
n = len(nums)
if k > n:
return -1
# 双端队列用于存储窗口中的元素下标
q = deque()
# 将窗口的第一个元素加入队列
for i in range(k):
while q and nums[i] >= nums[q[-1]]:
q.pop()
q.append(i)
# 计算窗口中的最大值中的最小值
res = nums[q[0]]
for i in range(k, n):
# 弹出队列中已经不属于窗口的元素
while q and q[0] <= i - k:
q.popleft()
# 将当前元素加入队列
while q and nums[i] >= nums[q[-1]]:
q.pop()
q.append(i)
# 计算窗口中的最大值中的最小值
res = min(res, nums[q[0]])
return res
```
该函数接受一个整数列表和一个整数 `k`,返回滑动窗口中的最大值中的最小值。如果滑动窗口大小大于列表长度,返回 `-1`。
例如,对于列表 `[1,3,-1,-3,5,3,6,7]` 和整数 `k=3`,函数将返回 `3`,因为滑动窗口中的最大值是 `[3,3,5,5,6,7]`,其中最小值是 `3`。