0
0
DSA Pythonprogramming~20 mins

Sliding Window Maximum Using Deque in DSA Python - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Sliding Window Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Sliding Window Maximum for a Simple Array
What is the output of the following Python code that finds the maximum in each sliding window of size 3 using a deque?
DSA Python
from collections import deque

def sliding_window_max(nums, k):
    dq = deque()
    result = []
    for i in range(len(nums)):
        while dq and dq[0] <= i - k:
            dq.popleft()
        while dq and nums[dq[-1]] < nums[i]:
            dq.pop()
        dq.append(i)
        if i >= k - 1:
            result.append(nums[dq[0]])
    return result

print(sliding_window_max([1,3,-1,-3,5,3,6,7], 3))
A[3, 3, 5, 5, 6, 7]
B[1, 3, -1, -3, 5, 3]
C[3, -1, -3, 5, 3, 6]
D[7, 6, 5, 3, -3, -1]
Attempts:
2 left
💡 Hint
Remember the deque stores indices of elements in decreasing order of their values.
🧠 Conceptual
intermediate
1:30remaining
Why Use a Deque for Sliding Window Maximum?
Why is a deque the best data structure to find the maximum in a sliding window efficiently?
ABecause it uses hashing to find the maximum element instantly.
BBecause it sorts the elements automatically, so the maximum is always at the front.
CBecause it stores elements in a tree structure for quick maximum lookup.
DBecause it allows adding and removing elements from both ends in O(1) time, maintaining candidates for maximum efficiently.
Attempts:
2 left
💡 Hint
Think about how the sliding window moves and how elements enter and leave the window.
🔧 Debug
advanced
2:00remaining
Identify the Error in Sliding Window Maximum Implementation
What error does the following code produce when run, and why? from collections import deque def sliding_window_max(nums, k): dq = deque() result = [] for i in range(len(nums)): while dq and nums[dq[-1]] <= nums[i]: dq.pop() dq.append(i) if i >= k - 1: if dq[0] <= i - k: dq.popleft() result.append(nums[dq[0]]) return result print(sliding_window_max([1,3,-1,-3,5,3,6,7], 3))
AIndexError because dq[0] is accessed before checking if dq is empty.
BTypeError because nums[dq[-1]] is compared with nums[i] incorrectly.
CWrong output because the window removal condition is checked after appending the max.
DNo error, outputs correct maximums.
Attempts:
2 left
💡 Hint
Check the order of removing indices outside the window and appending the maximum.
Predict Output
advanced
1:30remaining
Output of Sliding Window Maximum with Window Size 1
What is the output of this code when the window size is 1?
DSA Python
from collections import deque

def sliding_window_max(nums, k):
    dq = deque()
    result = []
    for i in range(len(nums)):
        while dq and dq[0] <= i - k:
            dq.popleft()
        while dq and nums[dq[-1]] < nums[i]:
            dq.pop()
        dq.append(i)
        if i >= k - 1:
            result.append(nums[dq[0]])
    return result

print(sliding_window_max([4, 2, 12, 3, 8], 1))
A[12]
B[4, 2, 12, 3, 8]
C[4]
D[]
Attempts:
2 left
💡 Hint
When the window size is 1, each element is its own window.
🧠 Conceptual
expert
1:30remaining
Time Complexity of Sliding Window Maximum Using Deque
What is the time complexity of finding the sliding window maximum using a deque for an array of length n and window size k, and why?
AO(n) because each element is added and removed from the deque at most once.
BO(n*k) because for each element, we scan k elements in the window.
CO(k*log n) because the deque maintains a sorted order using binary search.
DO(n^2) because nested loops are used to find maximums.
Attempts:
2 left
💡 Hint
Consider how many times each element can be pushed or popped from the deque.