📖 Scenario: Imagine you are analyzing the temperature readings of a city over several days. You want to find the highest temperature in every 3-day window to understand the hottest periods.
🎯 Goal: Build a program that uses a deque (double-ended queue) to find the maximum temperature in every sliding window of size 3 from a list of daily temperatures.
📋 What You'll Learn
Create a list called temperatures with the exact values: [4, 3, 5, 2, 1, 6, 7]
Create a variable called window_size and set it to 3
Use a deque from the collections module to help find the maximum in each sliding window
Print the list of maximum values for each sliding window
💡 Why This Matters
🌍 Real World
Sliding window maximum is useful in analyzing time series data like temperatures, stock prices, or sensor readings to find local peaks efficiently.
💼 Career
This technique is often asked in coding interviews and used in performance-critical applications where quick data analysis over moving windows is required.
Progress0 / 4 steps
1
Create the temperature list
Create a list called temperatures with these exact values: [4, 3, 5, 2, 1, 6, 7]
DSA Python
Hint
Use square brackets to create the list and separate numbers with commas.
2
Set the sliding window size
Create a variable called window_size and set it to 3
DSA Python
Hint
Just assign the number 3 to the variable window_size.
3
Find maximums using deque
Import deque from collections. Then create an empty deque called dq and an empty list called max_values. Use a for loop with variable i over the range of the length of temperatures. Inside the loop, remove indices from the right of dq while temperatures[i] is greater than or equal to temperatures[dq[-1]]. Append i to dq. Remove indices from the left of dq if they are out of the current window (less than i - window_size + 1). If i is greater than or equal to window_size - 1, append temperatures[dq[0]] to max_values.
DSA Python
Hint
Use deque to store indices of useful elements. Remove smaller elements from the right. Remove elements out of the window from the left.
4
Print the maximum values
Print the list max_values to show the maximum temperature in each sliding window.
DSA Python
Hint
Use print(max_values) to display the final list.
Practice
(1/5)
1. What is the main purpose of using a deque in the Sliding Window Maximum problem?
easy
A. To reverse the array elements
B. To sort the entire array before processing
C. To store the sum of elements in the window
D. To store indices of elements in a way that helps find the maximum efficiently
Solution
Step 1: Understand the role of deque
A deque stores indices of elements in the current window, maintaining order to quickly find the max.
Step 2: Why not other options?
Sorting or reversing is not done; sum is unrelated to max. Deque helps track max efficiently.
Final Answer:
To store indices of elements in a way that helps find the maximum efficiently -> Option D
Quick Check:
Deque stores indices for max tracking [OK]
Hint: Deque keeps max candidates in order for quick max retrieval [OK]
Common Mistakes:
Thinking deque stores actual values instead of indices
Assuming deque sorts the array
Confusing deque with sum calculation
2. Which of the following is the correct syntax to initialize an empty deque in Python for the sliding window maximum problem?
easy
A. from collections import deque; dq = deque()
B. deque = []
C. dq = deque([])
D. dq = collections.deque()
Solution
Step 1: Import deque correctly
Deque must be imported from collections module before use.
Step 2: Initialize empty deque
Using dq = deque() after import is correct syntax; dq = deque([]) also works but less common.
Final Answer:
from collections import deque; dq = deque() -> Option A
Quick Check:
Import then dq = deque() [OK]
Hint: Always import deque from collections before initializing [OK]
Common Mistakes:
Using list [] instead of deque
Not importing deque before use
Using collections.deque() without import
3. What is the output of the following code snippet?
from collections import deque
def max_sliding_window(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(max_sliding_window([1,3,-1,-3,5,3,6,7], 3))
medium
A. [3, 3, 5, 5, 6, 7]
B. [1, 3, -1, -3, 5, 3, 6, 7]
C. [3, -1, -3, 5, 3, 6, 7]
D. [7, 6, 5, 3, -3, -1, 3, 1]
Solution
Step 1: Understand sliding window max logic
For each window of size 3, the code finds max by maintaining indices in dq.
Hint: Track max in each window by deque front index [OK]
Common Mistakes:
Appending values instead of indices to deque
Not removing indices out of window
Confusing window size with output length
4. Identify the bug in this sliding window maximum code snippet:
from collections import deque
def max_sliding_window(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 dq[0] == i - k:
dq.popleft()
if i >= k - 1:
result.append(nums[dq[0]])
return result
print(max_sliding_window([1,3,-1,-3,5,3,6,7], 3))
medium
A. The condition to remove old indices should be dq[0] < i - k
B. The condition to remove old indices should be dq[0] <= i - k
C. The condition to remove old indices should be dq[0] == i - k + 1
D. The condition to remove old indices should be dq[0] <= i - k + 1
Solution
Step 1: Check condition for removing old indices
Indices outside the window must be removed when dq[0] <= i - k (equivalent to dq[0] < i - k + 1).
Step 2: Analyze given condition
Given condition dq[0] == i - k removes only if exactly equal, missing older indices or multiples; must use while loop too.
Final Answer:
The condition to remove old indices should be dq[0] <= i - k -> Option B
Quick Check:
Remove indices outside window with dq[0] <= i - k [OK]
Hint: Remove indices strictly less than window start index [OK]
Common Mistakes:
Using equality instead of less than for removal
Removing indices too late causing wrong max
Not removing old indices at all
5. Given an array nums = [4, 2, 12, 3, 8, 7, 9] and window size k = 4, what is the output of the sliding window maximum using deque approach?
hard
A. [4, 12, 8, 9]
B. [4, 12, 7, 9]
C. [12, 12, 12, 9]
D. [12, 12, 8, 9]
Solution
Step 1: Identify windows and their max values
Windows of size 4: [4,2,12,3] max=12, [2,12,3,8] max=12, [12,3,8,7] max=12, [3,8,7,9] max=9.
Step 2: Verify max values carefully
Third window max is 12, but 12 is at index 2, window covers indices 2-5: 12,3,8,7 max=12. Fourth window max is 9.
Final Answer:
[12, 12, 12, 9] -> Option C
Quick Check:
Sliding window max for k=4 = [12,12,12,9] [OK]
Hint: Check max in each window carefully by indices [OK]
Common Mistakes:
Mixing up window boundaries
Choosing wrong max by ignoring window size
Confusing values with indices
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.