算法总结之 生成窗口的最大值数组
有一个整型数组arr 和一个 大小为w的窗口从数组的最左边滑倒最右边,窗口每次向右边滑动一个位置
如果数组长度为n, 窗口大小为w, 则一共产生 n-w+1 个窗口的最大值
请实现一个函数:
输入 整型数组 arr, 窗口大小 w
输出 一个长度为 n-w+1 的数组res res[i] 表示每一种窗口状态下的最大值。
本题的关键在于利用双端队列来实现最大值的更新。首先生成双端队列qmax, qmax中存放数组arr的下标
看代码:
package TT;import java.util.LinkedList;public class Test125 {public int[] getMaxWindow(int[] arr, int w){if(arr==null || w <1 || arr.length <w){return null;}LinkedList<Integer> qmax = new LinkedList<Integer>();int[] res = new int[arr.length-w+1];int index=0;for(int i =0; i<arr.length; i++){while(!qmax.isEmpty() && arr[qmax.peekLast()]<=arr[i]){qmax.pollLast();}qmax.addLast(i);if(qmax.peekFirst()==i-w){qmax.pollFirst();}if(i>=w-1){res[index++]=arr[qmax.peekFirst()];}}return res;}}
转载于:https://www.cnblogs.com/toov5/p/7513741.html
算法总结之 生成窗口的最大值数组相关推荐
- 左神算法:生成窗口最大值数组(Java版)
本题来自左神<程序员面试代码指南>"生成窗口最大值数组"题目. 题目 有一个整型数组 arr 和一个大小为 w 的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置 ...
- 栈和队列之生成窗口最大值数组
package com.chenyu.zuo.stackAndQueue;import java.util.LinkedList;/*** 题目:有一个整形数组,arr和一个大小为w的窗口从数组的最左 ...
- numpy随机生成01矩阵_NumPy数组基本介绍
本文作者:孙晓玲 文字编辑:钱梦璇 技术总编:张 邯 NumPy是短语"Numerical Python"的缩写,NumPy库是一个功能强大的Python库,主要用于对多维数组 ...
- 数组越界怎么判断_算法连载之求解两个有序数组的中位数
问题 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2.找出这两个有序数组的中位数.假设 nums1 和 nums2 不会同时为空. 示例 1: nums1 = [1, 3] num ...
- (笔试题)滑动窗口的最大值
题目: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值. 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6 ...
- matlab中基于十字形窗口的滤波算法,#215;字形滤波窗口在Matlab自适应中值滤波算法中的应用 - 21ic中国电子网...
由于种种原因,图像在生成.传输.变换等过程中往往会受到各种噪声的污染,从而导致图像质量退化.噪声信号的滤波是图像处理的基本任务之一,主要有线性滤波和非线性滤波两种方法.线性滤波方法一般具有低通特性,而 ...
- java 滑动窗口_【Java】 剑指offer(59-1) 滑动窗口的最大值
本文参考自<剑指offer>一书,代码采用Java语言. 题目 给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值.例如,如果输入数组{2, 3, 4, 2, 6, 2, 5, 1 ...
- 使用TextRank算法为文本生成关键字和摘要
使用TextRank算法为文本生成关键字和摘要 发表于1年前(2014-12-01 21:31) 阅读(10282) | 评论(27) 155人收藏此文章, 我要收藏 赞15 摘要 TextRan ...
- lintcode 滑动窗口的最大值(双端队列)
题目链接:http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑动窗口的最大值 给出一个可能包含重复的整数数组,和一个大小为 ...
最新文章
- 类的实例方法静态方法类方法属性方法属性
- 大学计算机二级培训蹭课,本人在复旦大学蹭课总结的一点小小的经验
- 软件设计师-不确定有限自动机到确定有限自动机转换的例子
- OpenCv之图像形态学(笔记08)
- springboot入门书籍推荐,“最粉嫩
- ExtJS4.2学习(11)——高级组件之Grid
- FriendlyUrls——在ASP.NET Web表单中使用更友好的URL
- mkfs 格式化分区并创建文件系统
- 李炎恢PHP高端培训视频教程
- 工业相机基本参数以及选型参考
- JavaCV本地视频流通过帧图片添加文本进行字幕合成
- vue项目访问路径添加项目名称
- Linux 容器化技术详解(虚拟化、容器化、Docker)
- 软件测试真假童子,19岁年薪千万,他打王者荣耀打成了“游戏圈的TFBOYS”
- 基于Spring boot的教学论坛系统的分页功能的实现,完善导航栏,搜索功能的实现,评论有关功能
- LOB大字段空间整理
- 微信拍一拍怎么设置文字?微信拍一拍加后缀仅需要这样…
- 《个体软件过程》—第8章8.2节认真制订承诺
- 在 macOS 中使用密码保护压缩(zip)文件
- 盘点软件测试必备软件
热门文章
- termux添加php镜像,termux | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror...
- 学校机房为什么要穿鞋套?
- 零基础开始学前端有什么建议?
- java 全局返回码设计_服务返回码的设计
- python创建实例属性_Python学习笔记__6.5章 实例属性和类属性
- 图片 富文本 粘贴_用C++实现富文本控件(中): 撤销
- 已知若干点求圆心_【求精干货】高中数学知识点总结归纳高一学生必须掌握
- mongodb连接池 php,node.js,mongodb_nodejs使用mongodb连接池,node.js,mongodb - phpStudy
- 计算机系统结构课程所设计总结,高级计算机系统结构-课程总结(13页)-原创力文档...
- pythoninformation leakage_GitHub - MrFk/GSIL: Github Sensitive Information Leakage(Github敏感信息泄露)...