59.滑动窗口的最大值

滑动窗口的最大值

https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788?tpId=13&tqId=11217&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

利用双端队列,队列存放有可能成为最大数值数字的下标;

class Solution:
    def maxInWindows(self, num, size):
        # write code here
        i = 0
        queue = []
        res = []
        while size > 0 and i < len(num):
            #i表示当前窗口中的最后一个数字下标
            #判断queue[0]是否还在当前窗口中
            if len(queue)>0 and i-size+1 > queue[0]:
                queue.pop(0)
            #如果有num[i]更大,那么目前队列中的队尾数字不可能成为最大值的下标,删除它
            while len(queue)>0 and num[queue[-1]] < num[i]:
                queue.pop()
            queue.append(i)
            #i=size-1时,第一个窗口建立完成,开始记录最大下标
            if i >= size - 1:
                res.append(num[queue[0]])
            i += 1
        return res
全部评论

相关推荐

09-01 16:46
已编辑
门头沟学院 Java
mmvvpp:错了!!给了offer之后还有试用期,试用期过了就完事了?错了!还有每个季度的kpi考核,拿一个c就等着被劝退。那我好好干不拿c不就完了?错了!最多三年劳动合同到期,续不续期未知数。每年都有1800w毕业生毕业,今年你是小萌新蜜月期,明年你是老油条,长江后浪推前浪,前浪死在沙滩上。这就是——互联网!
秋招的破防瞬间
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务