题解 | #滑动窗口的最大值#

滑动窗口的最大值

http://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788

双端队列的使用

from collections import deque
class Solution:
    def maxInWindows(self , num: List[int], size: int) -> List[int]:
        # write code here
        res = []
        len_num = len(num)
        dq = deque()
        for i in range(len_num):
            if i <= size - 1:
                while dq and num[dq[-1]] < num[i]:
                    dq.pop() 
                dq.append(i)
                if i == size - 1:
                    res.append(num[dq[0]])
            else:
                # 当对尾下标对应的数组值小于新加入的对象时,删除队尾
                while dq and (num[dq[-1]] < num[i]):
                    dq.pop()
                # 当对头下标超出窗口的范围时,删除对头
                while dq and (dq[0] < i - size + 1):
                    dq.popleft()
                print(dq)
                dq.append(i)
                res.append(num[dq[0]])
        return res
全部评论

相关推荐

牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务