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

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. java 不写this_JAVAthis使用的那些事儿
  2. linux shell 加、减、乘、除
  3. 网站不允许上传asp cer cdx htr等文件时
  4. ubuntu mysql 更新_数据库应用(三): Ubuntu 下 MySQL添加、更新与删除数据
  5. “人工智能创新大讲堂”全日程发布 | 听大咖畅谈智能社会
  6. POJ1734(floyd求最小环的路径)
  7. IPv6实验1_IPv6地址配置
  8. [BZOJ1509][NOI2003]逃学的小孩
  9. oralce load的时候使用触发器会导致load慢吗_你真的了解性能压测中的SLA吗?
  10. 关于文件上传,我要向struts提点意见
  11. 从零基础入门Tensorflow2.0 ----八、39.4. gpu4
  12. vue-element-ui组件 layout布局(网格系统)
  13. HFUT雨课堂形式与政策【支持考试】
  14. 图片马赛克去除工具_黑科技!利用 AI 技术,马赛克终于可以去掉了
  15. 生存或毁灭? 国内DIY现状大型调查分析
  16. 医学计算机应用基础实验报告word,word的操作——实验报告
  17. php作业批改系统源码,在线|WEB作业批改系统
  18. 基于Openwrt 拨号上网(SDX55) (PCIe)移植文档
  19. 开源程序LAN_share 单例模式巧用
  20. 职中计算机一级证,职中计算机等级一级考证教学网站的设计

热门文章

  1. python selenium 保存网页_使用python / selenium保存完整的网页(包括CSS,图像) - python...
  2. BurnAware – 轻量级免费刻录
  3. 简单记录Java的AES128加密和解密
  4. roadflow建立表单步骤
  5. 加快构建工业互联网产业生态
  6. SAS学习6(freq过程、tabulate过程、univariate过程、plot过程、chart过程)
  7. 线结构光视觉传感器/线激光深度传感器标定工具
  8. 电快速脉冲群(EFT)设计-EMC系列 硬件设计笔记4
  9. android+信号强度,Android信号强度计算方式
  10. typescript学习:Generics泛型