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

滑动窗口的最大值

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

# -*- coding:utf-8 -*-
class Solution:
    def maxInWindows(self, num, size):
        # write code here
        q = []
        
        if size == 0:
            return None
        
        if size == 1:
            return num
        
        for i in range(size):
            if len(q) == 0:
                q.append(i)
            else:
                for idx in q[::]:
                    if num[i] >= num[idx]:
                        q.pop(0)
                q.insert(0, i)
        ret  =[]
        ret.append(q[-1])

        for i in range(size, len(num)):
            if num[i] >= num[q[-1]]:
                q = [i]
            else:
                for item in q[::]:
                    if num[i] >= num[item]:
                        q.pop(0)
                q.insert(0, i)
            
            if i - q[-1] >= size:
                q.pop()

            ret.append(q[-1])
        
        
        retData = []
        for idx in ret:
            retData.append(num[idx])
        
        
        
        return retData
                    
        
        
        
全部评论

相关推荐

02-22 21:16
已编辑
门头沟学院 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务