方法一:暴力解法,遍历即可

import java.util.*;
public class Solution {public ArrayList<Integer> maxInWindows(int [] num, int size){ArrayList<Integer> list=new ArrayList<Integer>();if(size>num.length||size==0){return list;}for(int i=0;i<num.length-size+1;i++){int max=num[i];for(int j=i;j<i+size;j++){max=Math.max(max,num[j]);}list.add(max);}return list;}
}

方法二:定义一个双向队列用来存放数组中元素的下标。先将下标0放入队列,然后从下标1的位置开始遍历,每遍历一个值都将队列中小于这个值的元素去掉。然后将这个值的下标放入队列。如果当前遍历到的i减去队列头大于等于size,说明这个下标过期了需要被排除。如果遍历到的i+1大于等于size了,说明这个窗口应该滑动了,先将队列头元素放入list中。然后继续遍历。

注意:滑动窗口的大小为1的时候,num元素直接复制到list中并返回即可。

import java.util.*;
public class Solution {public ArrayList<Integer> maxInWindows(int [] num, int size){ArrayList<Integer> list=new ArrayList<Integer>();LinkedList<Integer> queue=new LinkedList<Integer>();queue.add(0);if(size>num.length||size==0){return list;}if(size==1){for(int i:num){list.add(i);}return list;}for(int i=1;i<num.length;i++){int value=num[i];if(value>num[queue.peekLast()]);{while(!queue.isEmpty()&&value>num[queue.peekLast()]){queue.pollLast();}}queue.add(i);if(i-queue.peek()>=size){queue.poll();}if(i+1>=size){list.add(num[queue.peek()]);}}return list;}
}

64、滑动窗口的最大值相关推荐

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

    个人博客:小景哥哥 64.滑动窗口的最大值 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在 ...

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

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

  3. lintcode 滑动窗口的最大值(双端队列)

    题目链接:http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑动窗口的最大值 给出一个可能包含重复的整数数组,和一个大小为  ...

  4. 《剑指offer》-- 序列化二叉树、二叉搜索树的第k个节点、数据流中的中位数、滑动窗口的最大值

    一.序列化二叉树: 1.题目: 请实现两个函数,分别用来序列化和反序列化二叉树. 2.解题思路: (1)根据前序遍历规则完成序列化与反序列化.所谓序列化指的是遍历二叉树为字符串:所谓反序列化指的是依据 ...

  5. 62、滑动窗口的最大值

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

  6. 牛客题霸 [滑动窗口的最大值] C++题解/答案

    牛客题霸 [滑动窗口的最大值] C++题解/答案 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一 ...

  7. 面试题59 - I. 滑动窗口的最大值/239. 滑动窗口最大值

    2020-05-11 1.题目描述 滑动窗口的最大值 2.题解 使用双端队列维护一个递减的队列 3.代码 class Solution { public:vector<int> maxSl ...

  8. (笔试题)滑动窗口的最大值

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

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

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

  10. 剑指offer:滑动窗口的最大值(栈和队列)

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

最新文章

  1. R语言进行数据聚合统计(Aggregating transforms)实战:使用R原生方法、data.table、dplyr等方案、计算分组均值并添加到可视化结果中
  2. python简历数据提取_如何使用pyPDF2从PDF格式的多页简历中提取文本数据?
  3. 用pycharm写appium脚本的时候,导入一个模块有时候会报错
  4. nginx配置url重定向-反向代理
  5. day9http协议
  6. matlab 剔除toc,matlab-罗曼诺夫斯基准则剔除粗大值
  7. 卷积神经网络原理解析
  8. Https 证书相关
  9. http概述(相关详解)
  10. go语法 — 多路选择操作符 select的用法
  11. 一个广告净化大师拦截视频网站片头广告的实现
  12. Java虚拟机字节码指令
  13. C++ vector 中sort的一些用法
  14. 同位语和插入语的理解
  15. java pg数据库事务回滚,基于Postgresql 事务的提交与回滚解析
  16. 如何书写一份大学活动策划书?
  17. django+xadmin 在线教育网站(二)
  18. ppt里面怎么打破折号
  19. 图信号处理——拉普拉斯矩阵
  20. AcWing 378. 骑士放置 题解

热门文章

  1. 社群运营普遍存在的3个问题,微信群助手帮你通通解决!
  2. 360百科词条怎么创建(教你100%通过审核方法)
  3. 用QRCode.js制作二维码解析器(qrcode.decode方法解析二维码)
  4. 微软常用运行库合集自动安装 2017.06.24 X86X64
  5. 七牛云存储的简单使用总结
  6. ace 计算机仿真,Logix齿轮数学建模与计算机仿真
  7. 互联网公司招聘--京东--前端-2016年笔试题
  8. OGG|利用 OGG 迁移 Oracle11g 到 19C
  9. 数缘社区上对libtom的介绍,贴过来先
  10. 排名前5位的开源问答系统