
import java.util.*;
public class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
int maxnums[] = new int[nums.length - k + 1];
NavigableMap<Integer, Integer> map = new TreeMap<Integer, Integer>();
for (int i = 0; i < nums.length - k + 1; i++) {
maxnums[i] = -10001;
if (i == 0) {
for (int j = 0; j < k; j++) {
if (maxnums[i] <= nums[j]) {
maxnums[i] = nums[j];
}
if (map.containsKey(nums[j])) {
map.remove(nums[j]);
}
map.put(nums[j], j);
}
} else {
if (!map.isEmpty()) {
if (map.lastEntry().getKey() == nums[i - 1]) {
if (map.lastEntry().getValue() > i - 1) {
// map.remove(nums[i - 1]);
} else {
map.remove(map.lastEntry().getKey());
}
} else {
if (map.get(nums[i - 1]) != null && map.get(nums[i - 1]) == i - 1) {
map.remove(nums[i - 1]);
}
}
if (!map.isEmpty()) {
maxnums[i] = map.lastEntry().getKey();
}
if (maxnums[i] <= nums[i + k - 1]) {
maxnums[i] = nums[i + k - 1];
}
map.put(nums[i + k - 1], i + k - 1);
}
}
}
return maxnums;
}
}
#华为od#