有关栈、堆、队列的LeetCode做题笔记,Python实现
239. 滑动窗口最大值 Sliding Window Maximum
第一种方法:用优先队列:大顶堆
第二种方法:因为窗口大小固定,只需要一个双端队列即可
class Solution:
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
if not nums:
return []
window, res = [], []
for i, x in enumerate(nums):
if i >= k and window[0] <= i - k:
window.pop(0)
while window and nums[window[-1]] <= x:
window.pop()
window.append(i)
if i >= k - 1:
res.append(nums[window[0]])
return res