文章目录

  • 暴力做法
  • 单调队列
  • 题目来源

暴力做法

直接遍历所有的滑动窗口,分别判断最大值。

时间复杂度O(n * k)
空间复杂度O(n)

class Solution {public:// 时间复杂度O(n * k)// 空间复杂度O(n)vector<int> maxInWindows(vector<int>& nums, int k) {vector<int> ans;for (int i = 0; i <= nums.size() - k; i ++) {int temp = getMax(nums, i, k);ans.push_back(temp);}return ans;}int getMax(vector<int>& nums, int start, int k) {int res = -0x3f3f3f3f;for (int i = start; i < start + k; i ++) {res = max(res, nums[i]);}return res;}};

单调队列

根据滑动窗口的概念,不停往前移动,这是队列的性质:每次队头删掉,队尾入队。所以,用队列来维护滑动窗口。

使用stl 双端队列deque。

每个滑动窗口只需要保留最大值。
时间复杂度O(n)
空间复杂度O(n)

class Solution {public:vector<int> maxInWindows(vector<int>& nums, int k) {vector<int> res;deque<int> q;for (int i = 0; i < nums.size(); i ++) {// 如果 当前元素下标 - 队头元素下标 大于等于窗口值,则队头出队if (q.size() && i - q.front() >= k) q.pop_front();// 当前窗口中只需要保留最大值while (q.size() && nums[q.back()] <= nums[i]) q.pop_back();// 每个元素下标入队q.push_back(i);// 每个滑动窗口输出一个最大值if (i >= k - 1) res.push_back(nums[q.front()]);}return res;}
};

题目来源

https://www.acwing.com/problem/content/75/

剑指offer:滑动窗口最大值相关推荐

  1. java 滑动窗口_【Java】 剑指offer(59-1) 滑动窗口的最大值

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值.例如,如果输入数组{2, 3, 4, 2, 6, 2, 5, 1 ...

  2. java queue 最大值_[剑指offer题解]队列的最大值/滑动窗口的最大值

    前言 众所周知,<剑指offer>是一本"好书". 为什么这么说? 因为在技术面试中,它里面罗列的算法题在面试中出现的频率是非常非常高的. 有多高,以我目前不多的面试来 ...

  3. 【LeetCode】剑指 Offer 59 - I. 滑动窗口的最大值

    [LeetCode]剑指 Offer 59 - I. 滑动窗口的最大值 文章目录 [LeetCode]剑指 Offer 59 - I. 滑动窗口的最大值 package offer;import ja ...

  4. 【重点】剑指offer——面试题65:滑动窗口的最大值

    剑指offer--面试题65:滑动窗口的最大值 Solution1: 笨蛋方法啊.. class Solution { public:vector<int> maxInWindows(co ...

  5. 【LeetCode】【队列】剑指 Offer 59 - I. 滑动窗口的最大值 思路解析和代码

    剑指 Offer 59 - I. 滑动窗口的最大值 题目链接 个人思路 题意 思路 滑动窗口的原理符合队列先进先出的性质,因此要考虑使用队列 关键要考虑一个问题 如果pop出当前最大值,要如何再次寻找 ...

  6. 【LeetCode笔记】剑指Offer 59. I 滑动窗口的最大值(Java、单调队列)

    文章目录 题目描述 思路 && 代码 1. 暴力法 O(n2n^2n2) && O(1) 2. 单调队列辅助 O(n) && O(n) 二刷 打卡第十天 ...

  7. 【LeetCode】剑指 Offer 59 - II. 队列的最大值

    [LeetCode]剑指 Offer 59 - II. 队列的最大值 文章目录 [LeetCode]剑指 Offer 59 - II. 队列的最大值 package offer;import java ...

  8. 剑指 Offer II 044. 二叉树每层的最大值

    链接:剑指 Offer II 044. 二叉树每层的最大值 题解: /*** Definition for a binary tree node.* struct TreeNode {* int va ...

  9. 剑指offer——连续子数组的最大值

    问题 剑指offer上的[连续子数组的最大值] 方法 动态规划 详解 问题拆分 容量为i数组 array[] 的连续子数组的最大值 max = max(end1,end2,--,endi) end2 ...

  10. [剑指offer]面试题第[59-2]题[JAVA][队列的最大值][暴力][双端队列]

    [问题描述][中等] [解答思路] 1. 暴力 复杂度分析 class MaxQueue {Queue<Integer> queue = new LinkedList();int maxV ...

最新文章

  1. php实现鼠标悬停显示下拉菜单,Html中鼠标悬停显示二级菜单的两种方法
  2. PHP在函数体中传递与接收参数
  3. UriComponentsBuilder 拼接URL、解析URL
  4. 【sprinb-boot】配置文件分离打包
  5. java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数
  6. windows调试工具集
  7. webkit内核 css,webkit内核
  8. Layui导航、面包屑
  9. jsf集成spring_JSF Spring Hibernate集成示例教程
  10. Python画数码晶体管日期(年月日时分秒)
  11. 深入理解C/C++ [Deep C (and C++)] (1)
  12. Leetcode46. Permutations全排列
  13. ftp和http转参数的使用(转)
  14. 研磨设计模式-设计模式的基础-设计模式有什么
  15. 关于c语言图书管理系统的ppt,课件C语言图书管理系统代码.doc
  16. Yolov3的Pytorch版本实现火焰检测
  17. CentOS7.9调整/Home分区大小
  18. ubuntu18.04键盘背光灯以及Scroll Lock建失效
  19. 如何找到隐式转换的SQL?
  20. 搜狗校招笔试题编程之一

热门文章

  1. Redux你的Angular 2应用--ngRx使用体验
  2. 【poj2187】 Beauty Contest
  3. python requests
  4. Python 2.7 Exception格式化工具
  5. C#拾遗系列(8):异常
  6. AJAX:Getting Started
  7. cad lisp 背景遮罩_给文字批量添加边界偏移因子为1.1(或其他值)的背景遮罩的源程序(有详细注解)...
  8. learnpython有中文版吗_简介 | Learn Python the Hard Way 中文版
  9. oracle批量插入并且返回自增主键_oracle 自增主键实现批量更新和增加sql
  10. 4.2 One-Shot 学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授