📖 Scenario: Imagine you are analyzing daily temperatures over a week. You want to find the highest temperature recorded in every 3-day period to understand short-term heat waves.
🎯 Goal: Build a program that uses the sliding window technique to find the maximum temperature in every 3-day window from a list of daily temperatures.
📋 What You'll Learn
Create an array called temperatures with exactly these values: 30, 32, 31, 35, 33, 34, 36
Create an integer variable called window_size and set it to 3
Use a for loop with variable i to slide the window over the array and find the maximum temperature in each window
Print the maximum temperatures for each 3-day window separated by spaces
💡 Why This Matters
🌍 Real World
Sliding window technique is used in weather data analysis, stock price monitoring, and network traffic analysis to find trends over fixed-size periods.
💼 Career
Understanding sliding window helps in roles like data analysis, software development, and system monitoring where processing continuous data streams efficiently is important.
Progress0 / 4 steps
1
Create the temperatures array
Create an integer array called temperatures with these exact values: 30, 32, 31, 35, 33, 34, 36
DSA C
Hint
Use curly braces {} to list the values inside the array.
2
Set the window size
Create an integer variable called window_size and set it to 3
DSA C
Hint
Use int window_size = 3; to set the window size.
3
Find maximum in each sliding window
Use a for loop with variable i to slide the window over temperatures and find the maximum temperature in each window of size window_size. Store the maximum in a variable called max_temp inside the loop.
DSA C
Hint
Use a nested loop: outer loop slides the window, inner loop finds the max in the window.
4
Print the maximum temperatures
Inside the outer for loop, print the variable max_temp followed by a space. After the loop, print a newline character.
DSA C
Hint
Use printf("%d ", max_temp); inside the loop and printf("\n"); after the loop.
Practice
(1/5)
1. What is the main purpose of using a sliding window technique on arrays?
easy
A. To efficiently process subarrays of fixed size without recomputing everything
B. To sort the array in ascending order
C. To reverse the array elements
D. To find the maximum element in the entire array
Solution
Step 1: Understand sliding window concept
The sliding window technique moves a fixed-size window over the array to process subarrays efficiently.
Step 2: Identify the main use
It avoids recomputing sums or other values for each subarray by updating results incrementally.
Final Answer:
To efficiently process subarrays of fixed size without recomputing everything -> Option A
Hint: Sliding window avoids repeated work on overlapping subarrays [OK]
Common Mistakes:
Thinking it sorts the array
Assuming it reverses elements
Confusing it with finding max of whole array
2. Which of the following is the correct syntax to initialize a sliding window sum for the first k elements in C?
easy
A. int sum = 0; for(int i = 1; i <= k; i++) sum += arr[i];
B. int sum = arr[0] + arr[k];
C. int sum = 0; for(int i = 0; i < k; i++) sum += arr[i];
D. int sum = arr[k]; for(int i = 0; i < k; i++) sum += arr[i];
Solution
Step 1: Check loop range for first k elements
The loop should start at 0 and run while i < k to cover first k elements.
Step 2: Verify sum initialization and accumulation
Sum starts at 0 and adds arr[i] for each i in 0 to k-1.
Final Answer:
int sum = 0; for(int i = 0; i < k; i++) sum += arr[i]; -> Option C
Quick Check:
Loop 0 to k-1 sums first k elements [OK]
Hint: Loop from 0 to k-1 to sum first k elements [OK]
Common Mistakes:
Starting loop at 1 instead of 0
Adding arr[k] which is outside first k elements
Initializing sum incorrectly
3. What is the output of the following C code snippet?
int arr[] = {1, 3, 2, 6, -1, 4, 1, 8, 2};
int k = 5;
int max_sum = 0, window_sum = 0;
for(int i = 0; i < k; i++) window_sum += arr[i];
max_sum = window_sum;
for(int i = k; i < 9; i++) {
window_sum += arr[i] - arr[i - k];
if(window_sum > max_sum) max_sum = window_sum;
}
printf("%d", max_sum);
medium
A. 18
B. 16
C. 17
D. 15
Solution
Step 1: Calculate initial window sum of first 5 elements
Sum = 1+3+2+6+(-1) = 11
Step 2: Slide window and update sums
Next windows: i=5: sum=11 + 4 - 1 = 14 i=6: sum=14 + 1 - 3 = 12 i=7: sum=12 + 8 - 2 = 18 i=8: sum=18 + 2 - 6 = 14 Max sum found = 18
Final Answer:
18 -> Option A
Quick Check:
Max sliding window sum = 18 [OK]
Hint: Update sum by adding new and subtracting old element [OK]
Common Mistakes:
Not subtracting the element leaving the window
Wrong initial sum calculation
Off-by-one errors in loop
4. Identify the error in the following sliding window code snippet and choose the correct fix:
int arr[] = {2, 1, 5, 1, 3, 2};
int k = 3;
int window_sum = 0;
for(int i = 0; i <= k; i++) window_sum += arr[i];
for(int i = k; i < 6; i++) {
window_sum += arr[i] - arr[i - k];
printf("%d ", window_sum);
}
medium
A. No error, code is correct
B. Change loop condition to i < k in second for loop
C. Initialize window_sum to arr[0]
D. Change loop condition to i < k in first for loop
Solution
Step 1: Check first loop range for initial sum
Loop runs i = 0 to i = k (inclusive), so 4 elements summed instead of 3.
Step 2: Fix loop condition to sum exactly k elements
Change condition to i < k to sum first 3 elements only.
Final Answer:
Change loop condition to i < k in first for loop -> Option D
Quick Check:
Initial sum must cover exactly k elements [OK]
Hint: Use i < k to sum first k elements, not i <= k [OK]
Common Mistakes:
Using <= instead of < in loop condition
Changing wrong loop's condition
Assuming initialization error
5. Given an array of integers and a window size k, how would you find the minimum sum of any contiguous subarray of size k using the sliding window technique?
hard
A. Sort the array and pick first k elements to sum
B. Initialize sum of first k elements, slide window updating sum and track minimum sum found
C. Use nested loops to check all subarrays and find minimum sum
D. Reverse the array and sum last k elements
Solution
Step 1: Calculate initial sum of first k elements
Sum the first k elements to start the sliding window.
Step 2: Slide window across array updating sum and track minimum
For each new element, add it and subtract the element leaving the window, update minimum sum if current sum is smaller.
Final Answer:
Initialize sum of first k elements, slide window updating sum and track minimum sum found -> Option B
Quick Check:
Sliding window tracks sums efficiently to find minimum [OK]
Hint: Track min sum by updating window sum while sliding [OK]
Common Mistakes:
Sorting array instead of sliding window
Using nested loops causing inefficiency
Ignoring elements leaving the window
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.