题目:
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。

提示:
- 1 <= nums.length <= 10^5
- -10^4 <= nums[i] <= 10^4
- 1 <= k <= nums.length
代码实现及思路:
from collections import deque
# 自定义队列
class MyQueue:
    def __init__(self):
        # 创建一个双端队列 作为基本数据结构
        self.queue = deque()
    def pop(self, value):
        # 当队列的头节点值和传入值相等 就把那个节点pop
        if self.queue and value == self.queue[0]:
            self.queue.popleft()
    def push(self, value):
        # 对尾部进行处理,保留递减数组
        while self.queue and value > self.queue[-1]:
            self.queue.pop()
        # 把每次滑动的新数加入尾部
        self.queue.append(value)
    def get_max(self):
        # 返回最大值即头部的节点
        return self.queue[0]
class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        que = MyQueue()
        res = []
        # 先将前k的元素放入队列
        for i in range(k):
            que.push(nums[i])
        res.append(que.get_max())
        # 遍历后面元素
        for i in range(k, len(nums)):
            #窗口向右移动,弹出队列中不在窗口内的元素
            que.pop(nums[i - k])
            #向队列添加元素
            que.push(nums[i])
            # 记录当前窗口最大值
            res.append(que.get_max())
        return res
时间和空间复杂度:
- 时间复杂度: O(n)
- 空间复杂度: O(k)











![华夏ERP信息泄露漏漏洞复现 [附POC]](https://img-blog.csdnimg.cn/13f13fc5025b4f82abdb22a5e3a934c5.png)







