改题与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
PREVIOUSjz061.扑克排中的顺子
NEXTjz062.圆圈中最后剩下的数字