题解 | #滑动窗口的最大值#
滑动窗口的最大值
http://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
public class Solution {
public ArrayList<Integer> maxInWindows(int [] num, int size) {
ArrayList <Integer> result=new ArrayList<>();
int maxindex=findmax(Arrays.copyOfRange(num,0,size),size);
int res=num[maxindex];
result.add(res);
for(int i=size;i<num.length;i++){
if(i-maxindex==size){
maxindex=findmax(Arrays.copyOfRange(num,i-size+1,i+1),size)+i-size+1;
}
if(num[i]>=num[maxindex]){
maxindex=i;
}
res=num[maxindex];
result.add(res);
}
return result;
}
public int findmax(int[] num,int size){
int max=0;
int index=0;
for(int i=0;i<size;i++){
if(num[i]>max){
max=num[i];
index=i;
}
}
return index;
}
}
暴力法,遍历每一次的窗口滑动确定最大值的index。