leetcode 239 滑动窗口最大值(python)

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

返回 滑动窗口中的最大值 。
leetcode 239 滑动窗口最大值(python)_第1张图片

class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        length = len(nums)
        if length < 2 or k < 2:return nums 
        queue,res = deque(),[] #创建记录可能最大值/结果的列表
        for l in range(length):
            if queue and queue[0] <= l-k: #删除不在当前窗口的值
                queue.popleft()
            while queue and nums[queue[-1]] < nums[l]:#删除比当前值小的数字保持单调递减数列的性质
                queue.pop()
            queue.append(l)
            if l > k-2:
                res.append(nums[queue[0]])
        return res

你可能感兴趣的:(丁丁的Python学习笔记,python,leetcode)