力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

- class Solution {
- public int[] maxSlidingWindow(int[] nums, int k) {
- LinkedList
deque = new LinkedList<>();//双端队列,存储单调队列的下标 - int ans[] = new int[nums.length-k+1];
- for (int i = 0,j=0; i < nums.length; i++) {
- if (!deque.isEmpty() && i - deque.peekFirst() >= k) deque.pollFirst();//判断是否需要出队
- while(!deque.isEmpty() && nums[deque.peekLast()] < nums[i]) deque.pollLast();
- deque.offerLast(i);
- if(i>=k-1)ans[j++]=nums[deque.peekFirst()];
- }
- return ans;
-
- }
- }
对于Linkedlist的一些补充(作为双端队列):
pollFirst();返回头部元素并删除
pollLast();返回尾部元素并删除
offerFirst();在头部添加元素
offerLast();在尾部添加元素
peekFirst();查看队头元素
peekLast();查看队尾元素