给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回 滑动窗口中的最大值 。
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