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
✗ Incorrect
The traversal always starts moving right from the top-left corner.
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
✗ Incorrect
We use top, bottom, left, and right to keep track of the current boundaries.
After moving right along the top row, what boundary is updated?
Aleft++
Btop++
Cright--
Dbottom--
✗ Incorrect
After moving right, the top boundary moves down by one (top++).
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
✗ Incorrect
Traversal stops when all elements are visited, which happens when top > bottom or left > right.
What is the next direction after moving down in Spiral Matrix Traversal?
ALeft
BRight
CUp
DDown again
✗ Incorrect
The order is right → down → left → up, so after down comes left.
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
Step 1: Understand traversal pattern
Spiral traversal means moving around the edges of the matrix first, then moving inward layer by layer.
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.
Final Answer:
Traverse the matrix in a circular pattern starting from the outer layer moving inward -> Option A
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
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.
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.
Final Answer:
let top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1; -> Option D
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
Step 1: Calculate total elements in matrix
Number of elements = rows x columns = 3 x 5 = 15.
Step 2: Understand spiral traversal covers all elements
Spiral traversal visits every element exactly once, so all 15 elements are printed.
Final Answer:
15 -> Option A
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
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
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
Step 1: Analyze the while loop condition
Using < excludes the last row and column when top == bottom or left == right, missing elements.
Step 2: Correct the condition
Change while (top < bottom && left < right) to while (top <= bottom && left <= right) to include all layers.
Final Answer:
The while loop condition should use <= instead of < to include last row and column -> Option C
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 unknownstrongwhile earning +1 Grip toward your certificate.