数组滑动窗口

    技术2022-07-10  105

    题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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; public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size) { ArrayList<Integer> list =new ArrayList<Integer>(); int n =num.length; if(size<1||num==null||n<size){ return list; } for( int i=0; i<n-size+1;i++){ int j=i+size; int max=num[i]; for(int k=i;k<j;k++){ // max=Math.max(max,num[k]); if(max<num[k]){ max=num[k]; } } list.add(max); } return list; } }
    Processed: 0.015, SQL: 9