Given a positive integer n, generate a square matrix filled with elements from 1 to n^2 in spiral order.
Example:
Input: 3 Output: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
题意:
给定n, 把1至n ^ 2所有的数,按照螺旋顺序填入方阵。
code
1 /* 2 Time: O(n^2) 3 Space: O(n^2) 4 */ 5 class Solution { 6 public int[][] generateMatrix(int n) { 7 int[][] matrix = new int[n][n]; 8 if (n == 0) return matrix; 9 int beginX = 0, endX = n - 1; 10 int beginY = 0, endY = n - 1; 11 int num = 1; 12 while (true) { 13 for (int j = beginX; j <= endX; ++j) matrix[beginY][j] = num++; 14 if (++beginY > endY) break; 15 16 for (int i = beginY; i <= endY; ++i) matrix[i][endX] = num++; 17 if (beginX > --endX) break; 18 19 for (int j = endX; j >= beginX; --j) matrix[endY][j] = num++; 20 if (beginY > --endY) break; 21 22 for (int i = endY; i >= beginY; --i) matrix[i][beginX] = num++; 23 if (++beginX > endX) break; 24 } 25 return matrix; 26 } 27 }