添加链接描述
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 思路是使用单调队列,把滑动窗口中最大的元素放在最头que=collections.deque()n=len(nums)res=[]# 初始化队列,队头保存最大的数的下标,因为需要下标来判断滑动窗口长度for i in range(k):while que and nums[i] >= nums[que[-1]]:que.pop()que.append(i)res.append(nums[que[0]])# 后k个元素for i in range(k,n):while que and nums[i]>=nums[que[-1]]:que.pop()que.append(i)# 判断窗口大小是不是等于kwhile que and i-k>=que[0]:que.popleft()res.append(nums[que[0]])return res
思路:
- 单调队列(队列初始化que=collections.deque())
- 还是单调队列,这个感觉很有意思
- 初始化,和判断队列窗口长度
- 这是滑动窗口非常经典的一道题