Data Structures19 sections · 729 units
Open in Course

Sliding Max - Implementation

Complete solution

Here's the solution:

function maxSlidingWindow(nums, k)
    n := length of nums
    deque := empty deque // stores indices
    result := empty array

    for i from 0 to n - 1
        // Remove indices outside current window
        while deque is not empty and front of deque < i - k + 1
            pop front from deque

        // Maintain decreasing order
        while deque is not empty and nums[i] >= nums[back of deque]
            pop back from deque

        push i to back of deque

        // Window is full, record maximum
        if i >= k - 1
            append nums[front of deque] to result

    return result

Time: O(n)O(n). Space: O(k)O(k).