lc239.滑动窗口最大值

 

题目链接

改题与jz059I相同,这个算法的时间复杂度是O(N),空间复杂度是O(K)。

class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        res, window, lnums = [], collections.deque(), len(nums)
        for i in range(lnums):
            while window and nums[i] > nums[window[-1]]:
                window.pop()
            window.append(i)
            if i - k == window[0]:
                window.popleft()
            if i >= k - 1:
                res.append(nums[window[0]])
        return res