博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法总结之 生成窗口的最大值数组
阅读量:5156 次
发布时间:2019-06-13

本文共 641 字,大约阅读时间需要 2 分钟。

有一个整型数组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 
qmax = new LinkedList
(); int[] res = new int[arr.length-w+1]; int index=0; for(int i =0; i
=w-1){ res[index++]=arr[qmax.peekFirst()]; } } return res; } }

  

 

转载于:https://www.cnblogs.com/toov5/p/7513741.html

你可能感兴趣的文章
vue怎么将一个组件引入另一个组件?
查看>>
bzoj1040: [ZJOI2008]骑士
查看>>
LeetCode 74. Search a 2D Matrix(搜索二维矩阵)
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty&#39;s Blocks
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
js兼容公用方法
查看>>