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 ] ]
与Spiral Matrix 方法完全一样 只是原来是从二维数组赋值给List现在是赋值给二维数组 代码是在Spiral Matrix 的基础上改的 代码如下:
public class Solution { public static int[][] generateMatrix(int n) { int[][] res=new int[n][n]; arrayComeplete(res, 0, n-1, 0, n-1, 0,1); return res; } public static void arrayComeplete(int[][] matrix, int xbegin, int xend, int ybegin, int yend, int count,int index) { if (xbegin > xend || ybegin > yend) return; switch (count % 4) { case 0: for (int i = ybegin; i <= yend; i++) { matrix[xbegin][i]=index; index++; } xbegin++; count++; arrayComeplete(matrix, xbegin, xend, ybegin, yend, count, index); break; case 1: for (int i = xbegin; i <= xend; i++) { matrix[i][yend]=index; index++; } yend--; count++; arrayComeplete(matrix, xbegin, xend, ybegin, yend, count, index); break; case 2: for (int i = yend; i >= ybegin; i--) { matrix[xend][i]=index; index++; } xend--; count++; arrayComeplete(matrix, xbegin, xend, ybegin, yend, count, index); break; case 3: for (int i = xend; i >= xbegin; i--) { matrix[i][ybegin]=index; index++; } ybegin++; count++; arrayComeplete(matrix, xbegin, xend, ybegin, yend, count, index); break; default: break; } } }