Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
package leetCode; import java.util.Arrays; /** * Created by lxw, liwei4939@126.com on 2018/3/9. */ public class L059_Spiral_matrix { public int[][] generateMatrix(int n){ if (n <= 0){ return new int[0][0]; } int[][] matrix = new int[n][n]; int num = 1; int tR = 0, tC = 0; int dR = n -1, dC = n -1; while (tR <= dR && tC <= dC){ for (int curC = tC; curC <= dC; curC++){ matrix[tR][curC] = num++; } for (int curR = tR + 1; curR <= dR; curR++){ matrix[curR][dC] = num++; } for (int curC = dC - 1; curC >= tC; curC --){ matrix[dR][curC] = num ++; } for (int curR = dR -1; curR >= tR +1; curR --){ matrix[curR][tC] = num ++; } tR ++; tC ++; dR --; dC --; } return matrix; } public static void main(String[] args){ L059_Spiral_matrix tmp = new L059_Spiral_matrix(); int[][] mat = tmp.generateMatrix(2); for (int i = 0; i < mat.length; i++){ System.out.println(Arrays.toString(mat[i])); } } }