Bird
Raised Fist0
DSA Cprogramming~20 mins

Sliding Window on Arrays in DSA C - Practice Problems & Challenges

Choose your learning style10 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
What is the output of the following code that finds the maximum in each sliding window of size 3?
DSA C
int arr[] = {1, 3, -1, -3, 5, 3, 6, 7};
int n = 8, k = 3;
int result[6];
int max_index = 0;
for (int i = 1; i < k; i++) {
    if (arr[i] > arr[max_index]) max_index = i;
}
result[0] = arr[max_index];
for (int i = k; i < n; i++) {
    if (max_index <= i - k) {
        max_index = i - k + 1;
        for (int j = max_index + 1; j <= i; j++) {
            if (arr[j] > arr[max_index]) max_index = j;
        }
    } else if (arr[i] > arr[max_index]) {
        max_index = i;
    }
    result[i - k + 1] = arr[max_index];
}
for (int i = 0; i <= n - k; i++) {
    printf("%d ", result[i]);
}
A1 3 3 5 6 7
B3 3 5 5 6 7
C3 -1 5 3 6 7
D3 3 5 3 6 7
Attempts:
2 left
💡 Hint
Track the maximum index carefully when the window slides.
❓ Predict Output
intermediate
2:00remaining
Sum of Sliding Window
What is the output of this code that calculates the sum of each sliding window of size 4?
DSA C
int arr[] = {2, 1, 5, 1, 3, 2};
int n = 6, k = 4;
int sum = 0;
int result[3];
for (int i = 0; i < k; i++) {
    sum += arr[i];
}
result[0] = sum;
for (int i = k; i < n; i++) {
    sum += arr[i] - arr[i - k];
    result[i - k + 1] = sum;
}
for (int i = 0; i <= n - k; i++) {
    printf("%d ", result[i]);
}
A11 10 9
B9 10 12
C2 1 5 1
D9 10 11
Attempts:
2 left
💡 Hint
Add the new element and remove the old element from the sum as the window slides.
🔧 Debug
advanced
2:00remaining
Identify the error in sliding window minimum code
What error does the following code produce when trying to find the minimum in each sliding window of size 2?
DSA C
int arr[] = {4, 2, 12, 3, 5};
int n = 5, k = 2;
int min_index = 0;
for (int i = 1; i < k; i++) {
    if (arr[i] < arr[min_index]) min_index = i;
}
printf("%d ", arr[min_index]);
for (int i = k; i < n; i++) {
    if (min_index <= i - k) {
        min_index = i - k + 1;
        for (int j = min_index + 1; j <= i; j++) {
            if (arr[j] < arr[min_index]) min_index = j;
        }
    } else if (arr[i] < arr[min_index]) {
        min_index = i;
    }
    printf("%d ", arr[min_index]);
}
ARuntime error: out-of-bounds access
BNo error, prints: 2 2 3 3
CNo error, prints: 4 2 3 3
DLogic error: skips some minimum values
Attempts:
2 left
💡 Hint
Check the condition that updates min_index when the window slides.
❓ Predict Output
advanced
2:00remaining
Output of Sliding Window with Variable Window Size
What is the output of this code that prints the maximum of sliding windows with sizes increasing from 1 to 3?
DSA C
int arr[] = {1, 3, 2, 5};
int n = 4;
for (int k = 1; k <= 3; k++) {
    for (int i = 0; i <= n - k; i++) {
        int max_val = arr[i];
        for (int j = i + 1; j < i + k; j++) {
            if (arr[j] > max_val) max_val = arr[j];
        }
        printf("%d ", max_val);
    }
    printf("\n");
}
A
1 3 2 5 
3 2 5 
3 5 5 
B
1 3 2 5 
3 3 5 
2 5 5 
C
1 3 2 5 
3 3 5 
3 5 5 
D
1 3 2 5 
3 3 5 
3 3 5 
Attempts:
2 left
💡 Hint
For each window size, find the max in each window carefully.
🧠 Conceptual
expert
2:00remaining
Sliding Window Algorithm Optimization
Which data structure is best suited to optimize the sliding window maximum problem to O(n) time complexity?
ADeque (double-ended queue)
BPriority Queue (Heap)
CQueue
DStack
Attempts:
2 left
💡 Hint
Think about a structure that allows insertion and removal from both ends efficiently.

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

  1. Step 1: Understand sliding window concept

    The sliding window technique moves a fixed-size window over the array to process subarrays efficiently.
  2. Step 2: Identify the main use

    It avoids recomputing sums or other values for each subarray by updating results incrementally.
  3. Final Answer:

    To efficiently process subarrays of fixed size without recomputing everything -> Option A
  4. Quick Check:

    Sliding window = efficient subarray processing [OK]
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

  1. 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.
  2. Step 2: Verify sum initialization and accumulation

    Sum starts at 0 and adds arr[i] for each i in 0 to k-1.
  3. Final Answer:

    int sum = 0; for(int i = 0; i < k; i++) sum += arr[i]; -> Option C
  4. 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

  1. Step 1: Calculate initial window sum of first 5 elements

    Sum = 1+3+2+6+(-1) = 11
  2. 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
  3. Final Answer:

    18 -> Option A
  4. 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

  1. Step 1: Check first loop range for initial sum

    Loop runs i = 0 to i = k (inclusive), so 4 elements summed instead of 3.
  2. Step 2: Fix loop condition to sum exactly k elements

    Change condition to i < k to sum first 3 elements only.
  3. Final Answer:

    Change loop condition to i < k in first for loop -> Option D
  4. 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

  1. Step 1: Calculate initial sum of first k elements

    Sum the first k elements to start the sliding window.
  2. 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.
  3. Final Answer:

    Initialize sum of first k elements, slide window updating sum and track minimum sum found -> Option B
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard