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

滑动窗口的最大值

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

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param num int整型一维数组 
# @param size int整型 
# @return int整型一维数组
#
class Solution:
    def maxInWindows(self , nums: List[int], size: int) -> List[int]:
        # 用一个存储最大值的队列记录滑动窗口最大元素的idx(用idx是为了窗口越界操作)
        # 加入新元素如果比当前que中最大元素大,清que,加入新元素
        # 加入新元素如果比当前que中最大元素小,清que中比当前新元素小的元素,加入新元素
        if len(nums) == 0:
            return 0
        
        if size == 1:
            return nums
        
        que = []
        result = []
        for i in range(len(nums)):
            
            if i == 0:
                que.append(i)
                continue

            
            while i - que[0] >= size:
                que.pop(0)
                
            if nums[i] < nums[que[0]]:
                while que and nums[que[-1]] < nums[i]:
                    que.pop()
                que.append(i)
            else:
                while que:
                    que.pop(0)
                que.append(i)
            if i >= size - 1:
                result.append(nums[que[0]])
                
        return result
                    
            
全部评论

相关推荐

06-27 18:45
中山大学 Ruby
25届应届毕业生,来广州2个礼拜了,找不到工作,绝望了,太难过了…
应届想染班味:9爷找不到工作只能说明,太摆了或者太挑了。
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
一口洪烧肉:哈哈哈哈哈哈哈哈哈哈哈硬要啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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