题解 | #滑动窗口的最大值#
滑动窗口的最大值
https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型一维数组
* @param size int整型
* @return int整型ArrayList
*/
public ArrayList<Integer> maxInWindows (int[] num, int size) {
// write code here
// <= 10000, Integer
ArrayList<Integer> list = new ArrayList<Integer>();
int len = num.length;
if (len == 0 || size == 0 || len < size) return list;
int index = 0;
int count = 0;
//-30亿
long max = -3000000000L;
// TreeSet<Integer> set = new TreeSet<Integer>();
for (int i = 0; i < len; i++) {
count++;
if (num[i] > max) {
max = num[i];
}
// System.out.println("count: " + count + ",max:" + max);
if (count % size == 0) {
list.add(Long.valueOf(max).intValue());
// System.out.println("realMax: " + max);
max = -3000000000L;
//将2倒退回去
i = i - size + 1;
//如果剩下的不足size,直接结束即可
if (i + size >= len) {
// System.out.println("break,i:" + i);
break;
}
}
}
// while(index+size-1<len){
// for(int i =0; i<= index+size-1; i++){
// set.add(num[i]);
// }
// list.add(set.last());
// set.clear();
// }
return list;
}
}
