Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Sliding Window Maximum Using Deque in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of using a deque in the Sliding Window Maximum problem?
A deque helps keep track of indices of elements in the current window in a way that the front always holds the index of the maximum element. It allows efficient insertion and removal from both ends to maintain the window's maximum.
Click to reveal answer
intermediate
How does the deque maintain the order of elements for the Sliding Window Maximum?
The deque stores indices of elements in decreasing order of their values. When a new element comes, smaller elements at the back are removed to keep the deque ordered, ensuring the front is always the maximum.
Click to reveal answer
beginner
Why do we remove indices from the front of the deque in the Sliding Window Maximum algorithm?
Indices are removed from the front when they fall out of the current window's range, ensuring the deque only contains indices of elements inside the current window.
Click to reveal answer
intermediate
What is the time complexity of the Sliding Window Maximum algorithm using a deque?
The time complexity is O(n) because each element is added and removed from the deque at most once.
Click to reveal answer
beginner
In the Sliding Window Maximum problem, what does the deque store?
The deque stores indices of elements, not the elements themselves, to efficiently check if elements are out of the window and to access their values in the original array.
Click to reveal answer
What does the front of the deque represent in the Sliding Window Maximum algorithm?
AIndex of the maximum element in the current window
BIndex of the minimum element in the current window
CIndex of the first element in the array
DIndex of the last element in the array
Why do we remove elements from the back of the deque when a new element arrives?
ABecause they are smaller than the new element and won't be maximum
BBecause they are larger than the new element
CTo keep the deque size fixed
DTo remove duplicates
What happens when the index at the front of the deque is out of the current window?
AIt is moved to the back
BIt is removed from the front
CIt stays in the deque
DThe algorithm stops
What is the main advantage of using a deque for this problem?
AIt sorts the array automatically
BIt uses less memory than arrays
CIt allows O(n) time complexity
DIt stores only unique elements
In the Sliding Window Maximum problem, what does each element in the deque represent?
AValue of an element in the array
BMaximum value
CWindow size
DIndex of an element in the array
Explain how a deque is used to find the maximum in each sliding window of an array.
Think about how the deque keeps track of the maximum element efficiently.
You got /5 concepts.
    Describe the steps to update the deque when moving the sliding window by one position.
    Focus on how the deque changes as the window slides.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using a deque in the Sliding Window Maximum algorithm?
      easy
      A. To reverse the array elements
      B. To store all elements of the array for quick access
      C. To sort the entire array before processing
      D. To keep track of indices of elements in the current window in decreasing order of their values

      Solution

      1. Step 1: Understand the role of deque in the algorithm

        The deque stores indices of elements in the current window, maintaining them in decreasing order of their values to quickly find the maximum.
      2. Step 2: Eliminate incorrect options

        Options A, B, and C do not describe the deque's role in maintaining order or tracking maximums.
      3. Final Answer:

        To keep track of indices of elements in the current window in decreasing order of their values -> Option D
      4. Quick Check:

        Deque stores indices in decreasing order = D [OK]
      Hint: Deque keeps max candidates in order for O(1) max retrieval [OK]
      Common Mistakes:
      • Thinking deque stores actual values instead of indices
      • Assuming deque sorts the entire array
      • Confusing deque with a stack or queue only
      2. Which of the following TypeScript code snippets correctly initializes an empty deque using an array for the Sliding Window Maximum algorithm?
      easy
      A. const deque: number[] = [];
      B. const deque = new Deque();
      C. const deque = []; deque.push(null);
      D. const deque: string[] = [];

      Solution

      1. Step 1: Identify correct deque initialization in TypeScript

        Using an array of numbers is the common way to simulate a deque for indices, so const deque: number[] = []; is correct.
      2. Step 2: Check other options for errors

        A pushes null which is incorrect, B uses a non-existent Deque class by default, and D uses string array which is wrong for indices.
      3. Final Answer:

        const deque: number[] = []; -> Option A
      4. Quick Check:

        Array of numbers for deque = C [OK]
      Hint: Use number array for indices, no built-in Deque in TypeScript [OK]
      Common Mistakes:
      • Using string array instead of number array
      • Trying to use a Deque class without importing
      • Pushing null or undefined initially
      3. What is the output of the following TypeScript code snippet for sliding window maximum with window size 3?
      function maxSlidingWindow(nums: number[], k: number): number[] {
        const deque: number[] = [];
        const result: number[] = [];
        for (let i = 0; i < nums.length; i++) {
          while (deque.length && nums[deque[deque.length - 1]] <= nums[i]) {
            deque.pop();
          }
          deque.push(i);
          if (deque[0] === i - k) {
            deque.shift();
          }
          if (i >= k - 1) {
            result.push(nums[deque[0]]);
          }
        }
        return result;
      }
      
      console.log(maxSlidingWindow([1,3,-1,-3,5,3,6,7], 3));
      medium
      A. [1, 3, -1, -3, 5, 3]
      B. [3, 3, 5, 5, 6, 7]
      C. [3, -1, -3, 5, 3, 6]
      D. [7, 6, 5, 3, -3, -1]

      Solution

      1. Step 1: Trace the sliding window maximum for each window

        Windows and their max values: [1,3,-1] -> 3 [3,-1,-3] -> 3 [-1,-3,5] -> 5 [-3,5,3] -> 5 [5,3,6] -> 6 [3,6,7] -> 7
      2. Step 2: Confirm the output array matches these max values

        The output array is [3, 3, 5, 5, 6, 7], which matches.
      3. Final Answer:

        [3, 3, 5, 5, 6, 7] -> Option B
      4. Quick Check:

        Sliding window max = [3,3,5,5,6,7] [OK]
      Hint: Check max of each window manually to verify output [OK]
      Common Mistakes:
      • Not removing indices outside the window
      • Incorrectly popping from deque
      • Mixing values and indices in deque
      4. Identify the bug in the following Sliding Window Maximum code snippet and select the correct fix:
      function maxSlidingWindow(nums: number[], k: number): number[] {
        const deque: number[] = [];
        const result: number[] = [];
        for (let i = 0; i < nums.length; i++) {
          while (deque.length && nums[deque[deque.length - 1]] < nums[i]) {
            deque.pop();
          }
          deque.push(i);
          if (deque[0] <= i - k) {
            deque.shift();
          }
          if (i >= k - 1) {
            result.push(nums[deque[0]]);
          }
        }
        return result;
      }
      medium
      A. Change condition to 'nums[deque[deque.length - 1]] <= nums[i]' in while loop
      B. Change 'deque[0] <= i - k' to 'deque[0] < i - k' in if condition
      C. Remove the if condition that shifts deque
      D. Change 'deque.push(i)' to 'deque.unshift(i)'

      Solution

      1. Step 1: Analyze the while loop condition

        The condition 'nums[deque[deque.length - 1]] < nums[i]' does not pop elements equal to nums[i], keeping redundant candidates. It should use '<=' for strictly decreasing order.
      2. Step 2: Check other options

        B would fail to remove exactly expired indices, C removes necessary logic, D reverses order incorrectly.
      3. Final Answer:

        Change condition to 'nums[deque[deque.length - 1]] <= nums[i]' in while loop -> Option A
      4. Quick Check:

        <= in while removes equals too [OK]
      Hint: Use <= in while loop to remove equal values [OK]
      Common Mistakes:
      • Using < instead of <= in while loop
      • Wrong fix changing shift condition to <
      • Using unshift instead of push
      5. Given an array nums = [4, 2, 12, 3, 8, 7, 9] and window size k = 4, what is the sliding window maximum output if the algorithm is modified to return the indices of maximum elements instead of values?
      medium
      A. [3, 4, 5, 6]
      B. [0, 2, 4, 5]
      C. [2, 2, 2, 6]
      D. [2, 3, 4, 6]

      Solution

      1. Step 1: Find max values and their indices for each window of size 4

        Windows and max indices: [4,2,12,3] (0-3) -> 2 (12) [2,12,3,8] (1-4) -> 2 (12) [12,3,8,7] (2-5) -> 2 (12) [3,8,7,9] (3-6) -> 6 (9)
      2. Step 2: Collect indices of max elements

        The indices are [2, 2, 2, 6].
      3. Final Answer:

        [2, 2, 2, 6] -> Option C
      4. Quick Check:

        Max indices per window = [2,2,2,6] [OK]
      Hint: Track max element indices per window, not just values [OK]
      Common Mistakes:
      • Returning values instead of indices
      • Mixing up indices when max repeats
      • Not updating max index when window slides
      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