class Solution {
public int[] maxSlidingWindow(int[] nums, int k){
if(nums.length ==0|| k ==0)return new int[0];
Deque<Integer> deque = new LinkedList<>();
int[] res = new int[nums.length - k + 1];
for(int j =0, i =1 - k; j < nums.length; i++, j++){
// 删除 deque 中对应的 nums[i-1]
if(i >0&& deque.peekFirst()== nums[i - 1])
deque.removeFirst();
// 保持 deque 递减
while(!deque.isEmpty()&& deque.peekLast()< nums[j])
deque.removeLast();
deque.addLast(nums[j]);
// 记录窗口最大值
if(i >=0)
res[i]= deque.peekFirst();}return res;}}
class MaxQueue {
int[] q = new int[20000];
int begin =0, end =0;
public MaxQueue(){}
public int max_value(){
int ans = -1;for(int i = begin; i != end; ++i){
ans = Math.max(ans, q[i]);}return ans;}
public void push_back(int value){
q[end++]= value;}
public int pop_front(){if(begin == end){return -1;}return q[begin++];}}
/**
* Your MaxQueue object will be instantiated and called as such:
* MaxQueue obj = new MaxQueue();
* int param_1 = obj.max_value();
* obj.push_back(value);
* int param_3 = obj.pop_front();
*/
class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(nums.length == 0 || k == 0) return new int[0]; Deque<Integer> deque = new LinkedList<>(); int[] res = new int[nums.length - k + 1]; for(.