Skip to content

Latest commit

 

History

History
49 lines (33 loc) · 904 Bytes

File metadata and controls

49 lines (33 loc) · 904 Bytes

Sliding Window Maximum

Problem Link

https://leetcode.com/problems/sliding-window-maximum/


Pattern

  • Sliding Window
  • Deque

Approach

Use deque to maintain decreasing order of elements; pop from front when out of window.


Time Complexity

O(n)

Space Complexity

O(n)


Java Solution

import java.util.*;
class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        Deque<Integer> deque = new ArrayDeque<>();
        int[] result = new int[nums.length - k + 1];
        for (int i = 0; i < nums.length; i++) {
            while (!deque.isEmpty() && deque.peekFirst() < i - k + 1) deque.pollFirst();
            while (!deque.isEmpty() && nums[deque.peekLast()] <= nums[i]) deque.pollLast();
            deque.addLast(i);
            if (i >= k - 1) result[i - k + 1] = nums[deque.peekFirst()];
        }
        return result;
    }
}