Bird
Raised Fist0
DSA Pythonprogramming~20 mins

Spiral Matrix Traversal in DSA Python - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Spiral Matrix Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Spiral Traversal on 3x3 Matrix
What is the output of the spiral traversal on the following 3x3 matrix?

Matrix:
1 2 3
4 5 6
7 8 9
DSA Python
def spiral_traversal(matrix):
    result = []
    top, bottom = 0, len(matrix) - 1
    left, right = 0, len(matrix[0]) - 1
    while left <= right and top <= bottom:
        for i in range(left, right + 1):
            result.append(matrix[top][i])
        top += 1
        for i in range(top, bottom + 1):
            result.append(matrix[i][right])
        right -= 1
        if top <= bottom:
            for i in range(right, left - 1, -1):
                result.append(matrix[bottom][i])
            bottom -= 1
        if left <= right:
            for i in range(bottom, top - 1, -1):
                result.append(matrix[i][left])
            left += 1
    return result

print(spiral_traversal([[1,2,3],[4,5,6],[7,8,9]]))
A[1, 2, 3, 6, 9, 8, 7, 4, 5]
B[1, 2, 3, 4, 5, 6, 7, 8, 9]
C[1, 4, 7, 8, 9, 6, 3, 2, 5]
D[1, 3, 5, 7, 9, 2, 4, 6, 8]
Attempts:
2 left
💡 Hint
Follow the edges of the matrix clockwise, moving inward layer by layer.
❓ Predict Output
intermediate
2:00remaining
Spiral Traversal Output for Rectangular Matrix
What is the spiral traversal output of this 3x4 matrix?

Matrix:
1 2 3 4
5 6 7 8
9 10 11 12
DSA Python
def spiral_traversal(matrix):
    result = []
    top, bottom = 0, len(matrix) - 1
    left, right = 0, len(matrix[0]) - 1
    while left <= right and top <= bottom:
        for i in range(left, right + 1):
            result.append(matrix[top][i])
        top += 1
        for i in range(top, bottom + 1):
            result.append(matrix[i][right])
        right -= 1
        if top <= bottom:
            for i in range(right, left - 1, -1):
                result.append(matrix[bottom][i])
            bottom -= 1
        if left <= right:
            for i in range(bottom, top - 1, -1):
                result.append(matrix[i][left])
            left += 1
    return result

print(spiral_traversal([[1,2,3,4],[5,6,7,8],[9,10,11,12]]))
A[1, 5, 9, 10, 11, 12, 8, 4, 3, 2, 6, 7]
B[1, 4, 8, 12, 11, 10, 9, 5, 6, 7, 3, 2]
C[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
D[1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7]
Attempts:
2 left
💡 Hint
Traverse the outer layer first, then move inward.
🔧 Debug
advanced
2:00remaining
Identify the Error in Spiral Traversal Code
The following code is intended to perform spiral traversal on a matrix. What error will it raise when run on a 1x1 matrix?

Matrix:
[[1]]
DSA Python
def spiral_traversal(matrix):
    result = []
    top, bottom = 0, len(matrix) - 1
    left, right = 0, len(matrix[0]) - 1
    while left < right and top < bottom:
        for i in range(left, right + 1):
            result.append(matrix[top][i])
        top += 1
        for i in range(top, bottom + 1):
            result.append(matrix[i][right])
        right -= 1
        for i in range(right, left - 1, -1):
            result.append(matrix[bottom][i])
        bottom -= 1
        for i in range(bottom, top - 1, -1):
            result.append(matrix[i][left])
        left += 1
    return result

print(spiral_traversal([[1]]))
A[1, 2, 4, 3]
B[] (empty list)
CIndexError
DInfinite loop
Attempts:
2 left
💡 Hint
Check the loop condition for small matrices.
🚀 Application
advanced
1:00remaining
Number of Elements Visited in Spiral Traversal
Given a 4x5 matrix, how many elements will be visited during a complete spiral traversal?
A9
B18
C20
D10
Attempts:
2 left
💡 Hint
Count all elements in the matrix.
🧠 Conceptual
expert
1:30remaining
Why Use Four Pointers in Spiral Traversal?
In spiral traversal of a matrix, why do we maintain four pointers (top, bottom, left, right)?
ATo keep track of the current boundaries of the unvisited matrix area
BTo store the values of the first row, last row, first column, and last column
CTo count the total number of elements visited in each direction
DTo mark the visited elements in the matrix
Attempts:
2 left
💡 Hint
Think about how the traversal shrinks the area it covers after each pass.

Practice

(1/5)
1. What is the main idea behind Spiral Matrix Traversal?
easy
A. Traverse the matrix in a spiral order starting from the top-left corner
B. Traverse the matrix row by row from left to right only
C. Traverse the matrix column by column from top to bottom only
D. Traverse the matrix diagonally from top-left to bottom-right

Solution

  1. Step 1: Understand traversal pattern

    Spiral traversal means moving around the matrix edges and gradually moving inward in a circular pattern.
  2. Step 2: Identify starting point and direction

    It starts at the top-left corner and moves right, then down, then left, then up, repeating until all elements are visited.
  3. Final Answer:

    Traverse the matrix in a spiral order starting from the top-left corner -> Option A
  4. Quick Check:

    Spiral traversal = circular edge-wise movement [OK]
Hint: Think of peeling an onion layer by layer in a circle [OK]
Common Mistakes:
  • Confusing spiral with row-wise or column-wise traversal
  • Starting traversal from the wrong corner
  • Ignoring direction changes after each edge
2. Which of the following Python code snippets correctly initializes the boundaries for spiral traversal of a matrix named matrix?
easy
A. top = 1; bottom = len(matrix); left = 1; right = len(matrix[0])
B. top = 0; bottom = len(matrix) - 1; left = 0; right = len(matrix[0]) - 1
C. top = 0; bottom = len(matrix); left = 0; right = len(matrix[0])
D. top = 1; bottom = len(matrix) - 1; left = 1; right = len(matrix[0]) - 1

Solution

  1. Step 1: Understand matrix boundaries

    For a matrix, top and left start at 0, bottom is last row index (length - 1), right is last column index (length - 1).
  2. Step 2: Check each option

    top = 0; bottom = len(matrix) - 1; left = 0; right = len(matrix[0]) - 1 correctly sets top=0, bottom=len(matrix)-1, left=0, right=len(matrix[0])-1 which matches the matrix indices.
  3. Final Answer:

    top = 0; bottom = len(matrix) - 1; left = 0; right = len(matrix[0]) - 1 -> Option B
  4. Quick Check:

    Boundary indices start at 0 and end at length-1 [OK]
Hint: Remember Python indexing starts at 0, so subtract 1 for last index [OK]
Common Mistakes:
  • Using length instead of length - 1 for bottom and right
  • Starting top or left at 1 instead of 0
  • Mixing row and column lengths
3. What is the output of the following Python code?
matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]
result = []
top, bottom = 0, 2
left, right = 0, 2
while top <= bottom and left <= right:
    for i in range(left, right + 1):
        result.append(matrix[top][i])
    top += 1
    for i in range(top, bottom + 1):
        result.append(matrix[i][right])
    right -= 1
    for i in range(right, left - 1, -1):
        result.append(matrix[bottom][i])
    bottom -= 1
    for i in range(bottom, top - 1, -1):
        result.append(matrix[i][left])
    left += 1
print(result)
medium
A. [1, 2, 3, 6, 9, 8, 7, 4, 5]
B. [1, 2, 3, 6, 9, 8, 7, 5, 4]
C. [1, 2, 3, 6, 9, 7, 8, 4, 5]
D. [1, 2, 3, 6, 9, 8, 7, 4]

Solution

  1. Step 1: Traverse top row left to right

    Elements: 1, 2, 3 added to result.
  2. Step 2: Traverse right column top to bottom

    Elements: 6, 9 added to result.
  3. Step 3: Traverse bottom row right to left

    Elements: 8, 7 added to result.
  4. Step 4: Traverse left column bottom to top

    Element: 4 added to result.
  5. Step 5: Inner layer traversal

    Only element 5 remains, added last.
  6. Final Answer:

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

    Spiral order = [1,2,3,6,9,8,7,4,5] [OK]
Hint: Follow edges clockwise, then move inward layer by layer [OK]
Common Mistakes:
  • Skipping the last inner element
  • Repeating elements or missing elements
  • Wrong direction in bottom or left traversal
4. The following code attempts spiral traversal but produces an error. What is the main bug?
matrix = [[1,2,3],[4,5,6],[7,8,9]]
top, bottom = 0, 2
left, right = 0, 2
result = []
while top <= bottom and left <= right:
    for i in range(left, right + 1):
        result.append(matrix[top][i])
    top += 1
    for i in range(top, bottom + 1):
        result.append(matrix[i][right])
    right -= 1
    for i in range(right, left - 1, -1):
        result.append(matrix[bottom][i])
    bottom -= 1
    for i in range(bottom, top - 1, -1):
        result.append(matrix[i][left])
    left += 1
print(result)
medium
A. The code uses incorrect range in the first for loop
B. The code uses wrong indices for left and right boundaries
C. The code does not check if top <= bottom before traversing bottom row
D. The code misses incrementing the left boundary

Solution

  1. Step 1: Analyze loop conditions

    The while loop checks top <= bottom and left <= right before each full cycle.
  2. Step 2: Identify missing checks inside loop

    After updating top and right, the code traverses bottom row and left column without checking if top <= bottom or left <= right again, causing index errors when boundaries cross.
  3. Final Answer:

    The code does not check if top <= bottom before traversing bottom row -> Option C
  4. Quick Check:

    Boundary checks needed before each edge traversal [OK]
Hint: Check boundaries before each edge traversal inside the loop [OK]
Common Mistakes:
  • Assuming one boundary check per loop is enough
  • Not updating boundaries correctly
  • Ignoring empty or single-row/column matrices
5. Given a rectangular matrix of size 3x4:
matrix = [
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9, 10, 11, 12]
]

What is the spiral traversal output?
hard
A. [1, 2, 3, 4, 8, 12, 11, 10, 9, 6, 5, 7]
B. [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 7, 6]
C. ]6 ,7 ,5 ,9 ,01 ,11 ,21 ,8 ,4 ,3 ,2 ,1[
D. [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7]

Solution

  1. Step 1: Traverse top row left to right

    Elements: 1, 2, 3, 4 added.
  2. Step 2: Traverse right column top to bottom

    Elements: 8, 12 added.
  3. Step 3: Traverse bottom row right to left

    Elements: 11, 10, 9 added.
  4. Step 4: Traverse left column bottom to top

    Element: 5 added.
  5. Step 5: Traverse inner row left to right

    Elements: 6, 7 added.
  6. Final Answer:

    [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7] -> Option D
  7. Quick Check:

    Spiral order covers all elements layer by layer [OK]
Hint: Follow edges clockwise, then move inward carefully for rectangular matrices [OK]
Common Mistakes:
  • Mixing order of inner elements
  • Skipping or repeating elements in inner layers
  • Confusing left column traversal direction
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