个人博客:小景哥哥

64.滑动窗口的最大值

题目描述
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。


import java.util.ArrayList;
import java.util.ArrayDeque;
public class Solution {/**用一个双端队列,队列第一个位置保存当前窗口的最大值,当窗口滑动一次1.判断当前最大值是否过期2.新增加的值从队尾开始比较,把所有比他小的值丢掉*/public ArrayList<Integer> maxInWindows(int [] num, int size){ArrayList<Integer> res = new ArrayList<>();if(size == 0) return res;int begin; ArrayDeque<Integer> q = new ArrayDeque<>();for(int i = 0; i < num.length; i++){begin = i - size + 1;if(q.isEmpty())q.add(i);else if(begin > q.peekFirst())q.pollFirst();while((!q.isEmpty()) && num[q.peekLast()] <= num[i])q.pollLast();q.add(i);  if(begin >= 0)res.add(num[q.peekFirst()]);}return res;}
}

剑指offer编程试题Java实现--64.滑动窗口的最大值相关推荐

  1. 剑指offer编程试题Java实现--60.把二叉树打印成多行

    个人博客:小景哥哥 60.把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. import java.util.ArrayList; import java ...

  2. 剑指offer编程试题Java实现--22.从上往下打印二叉树

    个人博客:小景哥哥 22.从上往下打印二叉树 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. import java.util.ArrayList; import java.util ...

  3. 剑指offer编程试题Java实现--45.扑克牌顺子

    个人博客:小景哥哥 45.扑克牌顺子 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)-他随机从中抽出了5张牌,想测测自己的手气,看看 ...

  4. 剑指offer编程题Java实现——面试题3二维数组中的查找

    题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 下面是我实现的代码,修 ...

  5. 剑指offer编程题(JAVA实现)——第35题:数组中的逆序对

    github https://github.com/JasonZhangCauc/JZOffer 剑指offer编程题(JAVA实现)--第35题:数组中的逆序对 题目描述 在数组中的两个数字,如果前 ...

  6. [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]

    [问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...

  7. 剑指offer面试题[64]-数据流中的中位数

    题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 分 ...

  8. 剑指offer——面试题64:数据流中的中位数

    剑指offer--面试题64:数据流中的中位数 Solution1: 最笨的方法了... class Solution { public:void Insert(int num) {num_strea ...

  9. Java详解剑指offer面试题50--第一个只出现一次的字符

    Java详解剑指offer面试题50–第一个只出现一次的字符 找出字符串中找出第一个只出现一次的字符,比如输入"abacceff",则输出'b' 要想知道某个字符是不是只出现了一次 ...

最新文章

  1. ORM操作models一对多、多对多关系
  2. redis命令_Redis 命令执行过程(下)
  3. python批量读取根目录下文件内容并保存
  4. PHP删除文件unlink
  5. linux文件本编辑,Linux就该这么学 -- 命令 -- 文本文件编辑命令
  6. 微型计算机各部件之间通过总线传递各种信息,2015年9月计算机一级考试基础及MSOffice应用选择真题...
  7. linux常用命令和配置
  8. quartz框架_定时任务调度框架Quartz
  9. 02-07 Python库-pytest
  10. Linux命令参数详细解析 mv
  11. 智慧校园的关键技术:云计算+物联网+大数据
  12. 计算机常见故障英语,常见电脑黑屏(有英文字母)的解决办法
  13. [方便WAP网站开发]在线手机WAP模拟器或软件
  14. python numpy 图片 pad 参数详解
  15. Pandas-数据结构-DataFrame(七):添加元素、修改元素、删除元素
  16. 239页10万字“联、管、用”三位一体雪亮工程整体建设方案
  17. 去掉UUID的小横线,如果你觉得不爽的话,哈哈
  18. 万字详解DevOps的前世今生,收藏!
  19. TCPMP之Interface篇
  20. 怎么把爱奇艺的qsv格式转换成mp4?教你快速转换爱奇艺格式

热门文章

  1. SpringBoot实战手册,值得收藏,每个Java工程师都必须要掌握
  2. 提升搬砖效率的神兵利器
  3. 考研计算机面试题目,计算机考研面试题目.doc
  4. 禅道xampp文件夹无法删除_无法删除文件夹 文件正在被另一个人或程序使用
  5. 【前端】localStorage 用法及使用注意事项
  6. 计算机博士入学考试英语,博士生考试_考博与考研的区别(以计算机考博为例)_沪江英语...
  7. 请问你知道为什么关系型数据库要叫关系型数据库吗?
  8. 杰理AC692N系列增加编码器通过AD检测方式
  9. linux ln 权限不够,Linux ln命令的注意事項
  10. Mac 批量重命名(增加前缀后缀)