📖 Scenario: You have a 2D grid of numbers like a map or a table. You want to read all the numbers starting from the top-left corner and moving around the edges in a spiral, going inward until all numbers are read.
🎯 Goal: Build a Java program that takes a fixed 3x3 matrix and prints its elements in spiral order.
📋 What You'll Learn
Create a 3x3 integer matrix with exact values
Use variables to track the boundaries of the matrix
Use a loop to traverse the matrix in spiral order
Print the spiral order elements separated by spaces
💡 Why This Matters
🌍 Real World
Spiral traversal is useful in image processing, games, and reading data stored in layers.
💼 Career
Understanding matrix traversal helps in coding interviews and solving problems involving grids or 2D data.
Progress0 / 4 steps
1
Create the 3x3 matrix
Create a 2D integer array called matrix with these exact values: {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
DSA Java
Hint
Use int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; inside the main method.
2
Set up boundary variables
Add four integer variables inside main: top set to 0, bottom set to 2, left set to 0, and right set to 2
DSA Java
Hint
These variables will help track the edges of the matrix as you move inward.
3
Traverse the matrix in spiral order
Add a while loop that runs while left <= right and top <= bottom. Inside the loop, use for loops to traverse from left to right on the top row, top to bottom on the right column, right to left on the bottom row, and bottom to top on the left column. Update top, bottom, left, and right accordingly. Collect the elements in a StringBuilder called result separated by spaces.
DSA Java
Hint
Use four loops inside the while loop to cover all four sides of the current matrix boundary.
4
Print the spiral order
Add a System.out.println statement to print the result string trimmed of trailing spaces.
DSA Java
Hint
Use System.out.println(result.toString().trim()); to print the spiral order.
Practice
(1/5)
1. What is the main idea behind Spiral Matrix Traversal?
easy
A. Traverse the matrix in a circular pattern from outer to inner layers
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 and gradually moving inward in a circular way.
Step 2: Compare options
Only Traverse the matrix in a circular pattern from outer to inner layers describes moving in a circular pattern from outer to inner layers, which matches spiral traversal.
Final Answer:
Traverse the matrix in a circular pattern from outer to inner layers -> Option A
Quick Check:
Spiral traversal = circular outer to inner [OK]
Hint: Spiral means circle inward from edges [OK]
Common Mistakes:
Confusing spiral with row-wise traversal
Thinking spiral means diagonal only
Mixing column-wise with spiral
2. Which of the following Java code snippets correctly initializes the boundaries for spiral traversal of a matrix int[][] matrix?
easy
A. int top = 1, bottom = matrix.length, left = 1, right = matrix[0].length;
B. int top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1;
C. int top = 0, bottom = matrix[0].length - 1, left = 0, right = matrix.length - 1;
D. int top = matrix.length, bottom = 0, left = matrix[0].length, right = 0;
Solution
Step 1: Identify matrix dimensions
For a 2D array, rows = matrix.length, columns = matrix[0].length.
Step 2: Set boundaries correctly
Top and left start at 0, bottom is last row index (length-1), right is last column index (length-1). int top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1; matches this.
Final Answer:
int top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1; -> Option B
Quick Check:
Boundaries start at 0 and end at length-1 [OK]
Hint: Boundaries start at 0, end at length-1 [OK]
Common Mistakes:
Using 1-based indices instead of 0-based
Swapping rows and columns in boundaries
Setting bottom or right greater than max index
3. What is the output of the following Java code snippet for spiral traversal?
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int top = 0, bottom = 2, left = 0, right = 2;
while (top <= bottom && left <= right) {
for (int i = left; i <= right; i++) System.out.print(matrix[top][i] + " ");
top++;
for (int i = top; i <= bottom; i++) System.out.print(matrix[i][right] + " ");
right--;
if (top <= bottom) {
for (int i = right; i >= left; i--) System.out.print(matrix[bottom][i] + " ");
bottom--;
}
if (left <= right) {
for (int i = bottom; i >= top; i--) System.out.print(matrix[i][left] + " ");
left++;
}
}
medium
A. 1 4 7 8 9 6 3 2 5
B. 1 2 3 4 5 6 7 8 9
C. 1 2 3 6 9 8 7 4 5
D. 9 8 7 6 5 4 3 2 1
Solution
Step 1: Trace first outer layer
Top row: 1 2 3, right column down: 6 9, bottom row left: 8 7, left column up: 4
Step 2: Trace inner layer
Now top=1, bottom=1, left=1, right=1, print center element: 5
Final Answer:
1 2 3 6 9 8 7 4 5 -> Option C
Quick Check:
Spiral order matches 1 2 3 6 9 8 7 4 5 [OK]
Hint: Follow boundaries and print edges inward [OK]
Common Mistakes:
Printing rows or columns in wrong order
Missing center element in odd-sized matrix
Not updating boundaries correctly
4. Identify the bug in this spiral traversal code snippet:
int top = 0, bottom = matrix.length - 1;
int left = 0, right = matrix[0].length - 1;
while (top < bottom && left < right) {
for (int i = left; i <= right; i++) System.out.print(matrix[top][i] + " ");
top++;
for (int i = top; i <= bottom; i++) System.out.print(matrix[i][right] + " ");
right--;
for (int i = right; i >= left; i--) System.out.print(matrix[bottom][i] + " ");
bottom--;
for (int i = bottom; i >= top; i--) System.out.print(matrix[i][left] + " ");
left++;
}
medium
A. The while condition should use <= instead of < to include all layers
B. The for loops should use < instead of <= to avoid index errors
C. The boundaries are initialized incorrectly
D. The print statements should be inside if conditions to avoid duplicates
Solution
Step 1: Analyze while loop condition
Using < excludes the case when top == bottom or left == right, missing last layer in odd-sized matrices.
Step 2: Correct condition to include all layers
Changing to <= ensures the center or last layer is processed.
Final Answer:
The while condition should use <= instead of < to include all layers -> Option A
Quick Check:
Use <= in while to cover all layers [OK]
Hint: Use <= in while to cover all matrix layers [OK]