单调栈
- 递减的单调栈;栈内记录数组下标,当栈的底部坐标在滑动窗口之外, 则弹出;同时维持栈内递减;当遍历的元素有k个时,开始放置答案。
class Solution(object):
def maxInWindows(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: List[int]
"""
res, count, st = [], 0, []
for i, num in enumerate(nums):
if st and i - st[0] >= k:
st.pop(0)
while st and nums[st[-1]] <= num:
st.pop()
st.append(i)
count += 1
if count >= k:
res.append(nums[st[0]])
return res