滑动窗口的最大值
来源:互联网 发布:天龙八部淘宝抢号行吗 编辑:程序博客网 时间:2024/06/05 11:35
题目描述
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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.List;public class Solution { ArrayList<Integer> result = new ArrayList<Integer>(); public ArrayList<Integer> maxInWindows(int [] num, int size) { if(size == 0|| size > num.length){ return new ArrayList<Integer>();//返回空list } int head = 0; //滑动窗口头指针 int tail = size-1; //滑动窗口尾指针 int count = num.length-(size-1); //将num的元素放入到list中 ArrayList<Integer> container =new ArrayList<Integer>(); for(int i=0;i<num.length;i++){ container.add(num[i]); } //开始滑动 for(int i=0;i<count;i++){ List<Integer> window = container.subList(head,tail+1); getMax(window); head++; tail++; } return result; } //获得窗口中最大值 public void getMax(List<Integer> window){ int biggest = 0; for(int i=0;i<window.size();i++ ){ if(window.get(i) > biggest){ biggest = window.get(i); } } result.add(biggest); } //总结:(1)Arraylist没有length,用方法size(); // (2)subList()方法返回的是List,而且不能向下转型 // (3)subList(form,to)方法实际到达的位置是to - 1;}
解法2:
import java.util.ArrayList;import java.util.Collections;import java.util.Arrays;public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size) { if(num==null||size<0){ return null; } ArrayList<Integer> list=new ArrayList<Integer>(); if(size==0){ return list; } ArrayList<Integer> temp=null; int length=num.length; if(length<size){ return list; }else{ for(int i=0;i<length-size+1;i++){ temp=new ArrayList<Integer>(); for(int j=i;j<size+i;j++){ temp.add(num[j]); } Collections.sort(temp); list.add(temp.get(temp.size()-1)); } } return list; }}
阅读全文
0 0
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 滑动窗口的最大值
- 有意思的可变数组依据tomcat生命周期的lifeSupport
- Linux文件权限读法
- TabLayout联动Viewpager不显示图标的问题
- 学习Android重要的资源
- Python 读取文件时的路径问题 .
- 滑动窗口的最大值
- verilog编程控制LED流水灯,跑马灯,vivado软件
- number数据类型
- Lucky Coins Sequence (矩阵快速幂)
- 揭开Java培训班内幕
- [Python]Windows下安装Graphviz和pygraphviz的方法
- apply,bind,call应用小总结
- [Unity]制作一个弹幕系统
- 内存对齐