滑动窗口。
1)判断是否合法输入。
2)合法,则找出0~size-1 中最大值,其坐标为index。
3)滑动,判断index是否过期,过期则找到窗口中的最大值的index。添加到list当中。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> maxInWindows(int [] num, int size)
{
ArrayList<Integer> list=new ArrayList<Integer> ();
if(num==null||num.length<size||size<=0) return list;
//int max=num[0];
int index=0;
index=findMax(num,size,0);
list.add(num[index]);
for(int i=size;i<num.length;i++){
if(index<=i-size){index=findMax(num,size,index+1);}//判断是否过期,过期则找到最新的最大值
if(num[index]<num[i]) index=i;
list.add(num[index]);
}
return list;
}
public int findMax(int [] num,int size,int begin){
//int max=num[begin];
int index=begin;
for(int i= begin+1;i< begin+size;i++){
if(num[index]<num[i])
{
// max=num[i];
index=i;
}
}
return index;
}
}
面试题65:滑动窗口的最大值
最新推荐文章于 2020-06-26 17:51:56 发布