class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
if(nums.length==0) return new int[0];
mydeque deque=new mydeque();
int n=nums.length;
int[] res=new int[n-k+1];
for(int i=0;i<n;i++){
if(i<k-1){
deque.push(nums[i]);
}else{
deque.push(nums[i]);
res[i-k+1]=deque.getmax();
deque.pop(nums[i-k+1]);
}
}
return res;
}
}
class mydeque{
LinkedList<Integer> list=new LinkedList<>();
void push(int val){
while(!list.isEmpty()&&list.getLast()<val){
list.removeLast();
}
list.addLast(val);
}
void pop(int n){
if(n==list.getFirst()) list.removeFirst();
}
int getmax(){
return list.getFirst();
}
}
相关文章
- 04-03用单调队列解决滑动窗口的最大值
- 04-032021.1.30 刷题(滑动窗口最大值-单调队列)
- 04-03LeetCode-239-剑指offer-滑动窗口的最大值-队列与栈-python
- 04-03滑动窗口的最大值(数据结构单调队列)
- 04-03leetcode 239. 滑动窗口最大值(单调队列)
- 04-032021-10-5 239. 滑动窗口最大值(单调队列)
- 04-03Leetcode 239. 滑动窗口最大值(困难) 单调队列解决滑动窗口最大值
- 04-03LeetCode_Queue_239. Sliding Window Maximum 滑动窗口最大值【优先队列,单调队列】【java】【中等】
- 04-03【golang必备算法】单调队列 Letecode 239. 滑动窗口最大值