59. Leetcode: Spiral Matrix II
Given a positive integer n, generate an n x n matrix filled with elements from 1 to n2 in spiral order.
Example 1:

Input: n = 3
Output: [[1,2,3],[8,9,4],[7,6,5]]
/*
59. Spiral Matrix II
Given a positive integer n, generate an n x n matrix filled with elements from 1 to n*n in spiral order.
top
00 01 02
left 00 {1, 2, 3} 02 right
10 {4, 5, 6} 12
20 {7, 8, 9} 22
20 21 22
bottom
*/
public class SpiralMatrixII {
public static int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int left = 0;
int right = n - 1;
int top = 0;
int bottom = n - 1;
int count = 1;
while(left <= right) {
for(int j = left; j <= right; j++) { // left to right
matrix[top][j] = count++;
}
top++;
for(int i = top; i <= bottom; i++) { // top to bottom
matrix[i][right] = count++;
}
right--;
for(int j = right; j >= left; j--) { // right to left
matrix[bottom][j] = count++;
}
bottom--;
for (int i = bottom; i >= top; i--) { // bottom to up
matrix[i][left] = count++;
}
left++;
}
return matrix;
}
public static void main(String[] args) {
int n = 5;
int[][] matrix = generateMatrix(n);
for(int[] mat: matrix) {
System.out.println(Arrays.toString(mat));
}
}
}
Complexity Analysis:
Time Complexity: O(n)
Space Complexity: O(1)
Leetcode Problem Link: