滑动窗口最大值

来源:互联网 发布:linux进入单用户模式 编辑:程序博客网 时间:2024/05/17 09:42
//分三种情况讨论//首先当前窗口中新添加的值s大于前一个窗口最大值m,则当前窗口最大值为k//当前窗口新添加的至的值s小于最大的值m,且m在当前窗口中,则为m//s小于m并且m被滑走了,则重新再找public ArrayList<Integer> maxInWindows(int [] num, int size)    {         int len = num.length;         if(num==null||len<size||size<=0){        return null;          }         ArrayList<Integer> list = new ArrayList<Integer>();         int max = findMax(num,0,size-1);         list.add(num[max]);         for(int  i = size;i<len;i++){         if(num[i]>num[max]){        max= i;                 }else{         if(max==i-size)         max = findMax(num,i-size+1,i);                  }         list.add(num[max]);          }         return list;    }int findMax(int[] num, int start,int end){int max = start;for(int  i = start+1;i<=end;i++){if(num[i]>num[max])max = i;}return max;}

0 0
原创粉丝点击