抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回 滑动窗口中的最大值。


思路

  • 用队列模拟滑动窗口,每添加一个元素就计算区间最大值。(超过时间限制)
  • 使用 deque 实现 单调队列(单调递减或单调递增的队列),放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列可以返回里面的最大值;每次窗口移动的时候,调用que.pop(滑动窗口中移除元素的数值),que.push(滑动窗口添加元素的数值),然后que.front()就返回最大值。保证队列里的元素数值是由大到小的

学习点

  • 单调队列,队列中的元素从递增或者递减的顺序,有点类似于大顶堆、小顶堆,需要自己维护这个数据结构。

代码

超过时间限制:

实现单调队列:




本站采用 Volantis 主题设计