Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Spiral Matrix Traversal in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is Spiral Matrix Traversal?
It is a way to visit all elements of a matrix by moving in a spiral order, starting from the top-left corner and moving right, down, left, and up repeatedly until all elements are visited.
Click to reveal answer
beginner
Which directions are followed in Spiral Matrix Traversal?
The traversal follows four directions in order: right → down → left → up, and repeats this cycle until all elements are covered.
Click to reveal answer
intermediate
What variables are commonly used to keep track of boundaries in Spiral Matrix Traversal?
Four variables: top (start row), bottom (end row), left (start column), and right (end column) are used to track the current edges of the matrix to traverse.
Click to reveal answer
intermediate
Why do we update boundaries after each direction in Spiral Matrix Traversal?
After traversing one side, we move the boundary inward (e.g., top++ after moving right) to avoid revisiting elements and to move the spiral inward.
Click to reveal answer
beginner
Show the output of Spiral Matrix Traversal for matrix [[1,2,3],[4,5,6],[7,8,9]]
The output is [1, 2, 3, 6, 9, 8, 7, 4, 5], which is the order of elements visited in a spiral starting from top-left.
Click to reveal answer
What is the first direction to move in Spiral Matrix Traversal?
ARight
BDown
CLeft
DUp
Which variables track the current edges of the matrix in Spiral Matrix Traversal?
Arow, column
Bstart, end, middle
Cx, y, z
Dtop, bottom, left, right
After moving right along the top row, what boundary is updated?
Aleft++
Btop++
Cright--
Dbottom--
When do we stop the Spiral Matrix Traversal?
ABoth A and B
BWhen all elements are visited
CWhen top > bottom or left > right
DNever stops
What is the next direction after moving down in Spiral Matrix Traversal?
ALeft
BRight
CUp
DDown again
Explain how you would traverse a matrix in spiral order using boundaries.
Think about moving right, then down, then left, then up, and how boundaries change.
You got /6 concepts.
    Describe the stopping condition for Spiral Matrix Traversal and why it works.
    Consider how the boundaries shrink as you move inward.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main idea behind Spiral Matrix Traversal?
      easy
      A. Traverse the matrix in a circular pattern starting from the outer layer moving inward
      B. Traverse the matrix row by row from top to bottom
      C. Traverse the matrix column by column from left to right
      D. Traverse only the diagonal elements of the matrix

      Solution

      1. Step 1: Understand traversal pattern

        Spiral traversal means moving around the edges of the matrix first, then moving inward layer by layer.
      2. Step 2: Compare options

        Only Traverse the matrix in a circular pattern starting from the outer layer moving inward describes this circular, inward movement. Others describe linear or diagonal traversals.
      3. Final Answer:

        Traverse the matrix in a circular pattern starting from the outer layer moving inward -> Option A
      4. Quick Check:

        Spiral traversal = circular inward movement [OK]
      Hint: Think of peeling an onion layer by layer [OK]
      Common Mistakes:
      • Confusing spiral with row-wise traversal
      • Thinking spiral means diagonal only
      • Ignoring inward movement after outer layer
      2. Which of the following TypeScript code snippets correctly initializes variables for spiral traversal boundaries?
      easy
      A. let top = -1, bottom = matrix.length - 1, left = -1, right = matrix[0].length - 1;
      B. let top = 1, bottom = matrix.length, left = 1, right = matrix[0].length;
      C. let top = 0, bottom = matrix.length, left = 0, right = matrix[0].length;
      D. let top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1;

      Solution

      1. Step 1: Identify correct boundary initialization

        Top and left start at 0 (first row and column). Bottom and right are last indices, so length - 1.
      2. Step 2: Check options

        let top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1; correctly sets top=0, bottom=rows-1, left=0, right=cols-1. Others have off-by-one or negative values.
      3. Final Answer:

        let top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1; -> Option D
      4. Quick Check:

        Boundaries start at 0 and end at length-1 [OK]
      Hint: Remember array indices start at 0 [OK]
      Common Mistakes:
      • Using length instead of length - 1 for boundaries
      • Starting top or left at 1 instead of 0
      • Using negative indices incorrectly
      3. Given a rectangular matrix with 3 rows and 5 columns, how many elements will be printed after a complete spiral traversal?
      easy
      A. 15
      B. 8
      C. 12
      D. 10

      Solution

      1. Step 1: Calculate total elements in matrix

        Number of elements = rows x columns = 3 x 5 = 15.
      2. Step 2: Understand spiral traversal covers all elements

        Spiral traversal visits every element exactly once, so all 15 elements are printed.
      3. Final Answer:

        15 -> Option A
      4. Quick Check:

        Total elements = rows x columns = 15 [OK]
      Hint: Spiral prints all elements once [OK]
      Common Mistakes:
      • Confusing spiral length with perimeter
      • Counting only outer layer elements
      • Ignoring rectangular shape
      4. What is the output of the following TypeScript code for spiral traversal?
      const matrix = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
      ];
      
      function spiralOrder(matrix: number[][]): number[] {
        const result: number[] = [];
        let top = 0, bottom = matrix.length - 1;
        let left = 0, right = matrix[0].length - 1;
      
        while (top <= bottom && left <= right) {
          for (let i = left; i <= right; i++) result.push(matrix[top][i]);
          top++;
          for (let i = top; i <= bottom; i++) result.push(matrix[i][right]);
          right--;
          if (top <= bottom) {
            for (let i = right; i >= left; i--) result.push(matrix[bottom][i]);
            bottom--;
          }
          if (left <= right) {
            for (let i = bottom; i >= top; i--) result.push(matrix[i][left]);
            left++;
          }
        }
        return result;
      }
      
      console.log(spiralOrder(matrix));
      medium
      A. [1, 4, 7, 8, 9, 6, 3, 2, 5]
      B. [1, 2, 3, 6, 9, 8, 7, 4, 5]
      C. [1, 2, 3, 4, 5, 6, 7, 8, 9]
      D. [9, 8, 7, 4, 1, 2, 3, 6, 5]

      Solution

      1. Step 1: Trace the spiral traversal on the matrix

        Start top row left to right: 1,2,3
        Right column top to bottom: 6,9
        Bottom row right to left: 8,7
        Left column bottom to top: 4
        Now inner layer: 5
      2. Step 2: Combine all elements in order

        Result array: [1,2,3,6,9,8,7,4,5]
      3. Final Answer:

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

        Spiral order matches [1, 2, 3, 6, 9, 8, 7, 4, 5] [OK]
      Hint: Visualize peeling matrix edges in order [OK]
      Common Mistakes:
      • Reading rows only left to right
      • Skipping inner elements
      • Mixing traversal directions
      5. Identify the bug in this spiral traversal code snippet:
      while (top < bottom && left < right) {
        for (let i = left; i <= right; i++) result.push(matrix[top][i]);
        top++;
        for (let i = top; i <= bottom; i++) result.push(matrix[i][right]);
        right--;
        for (let i = right; i >= left; i--) result.push(matrix[bottom][i]);
        bottom--;
        for (let i = bottom; i >= top; i--) result.push(matrix[i][left]);
        left++;
      }
      medium
      A. The for loops should use < instead of <= to avoid index out of bounds
      B. The variables top, bottom, left, right are not initialized
      C. The while loop condition should use <= instead of < to include last row and column
      D. The result array is not declared before the loop

      Solution

      1. Step 1: Analyze the while loop condition

        Using < excludes the last row and column when top == bottom or left == right, missing elements.
      2. Step 2: Correct the condition

        Change while (top < bottom && left < right) to while (top <= bottom && left <= right) to include all layers.
      3. Final Answer:

        The while loop condition should use <= instead of < to include last row and column -> Option C
      4. Quick Check:

        Use <= in loop condition to cover all edges [OK]
      Hint: Use <= to include boundary rows and columns [OK]
      Common Mistakes:
      • Using < excludes last layer elements
      • Not updating boundaries inside loop
      • Forgetting to check conditions before loops
      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