《剑指Offer》刷题笔记——面试题59. 滑动窗口的最大值

难度:简单/困难

一、题目描述:

在这里插入图片描述

二、解题分析:

1、剑指解析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、代码实现

class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        deque = [];result = [] # deque也可以用collection里的双端队列实现
        for i in range(0, len(nums)):
            while deque and nums[i]>nums[deque[-1]]: # 只存有可能成为最大值的数字的index进deque
                deque.pop()
            deque.append(i)
            while i-deque[0]>k-1: # 如果相距超过窗口k长度则弃掉
                deque.pop(0)
            if i >= k-1:
                result.append(nums[deque[0]]) # 这过程中始终保持deque[0]为最大值的index
        return result
发布了132 篇原创文章 · 获赞 154 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34108714/article/details/104771078
今日推荐