public class LC59 { public static void main(String[] args) { int n = 5; int[][] matrix = generateMatrix(n); for (int i = 0; i for (int j = 0; j System.out.printf("%4d ", matrix[i][j]); } System.out.println(); } } public static int[][] generateMatrix(int n) { int[][] matrix = new int[n][n]; int topMargin = 0; // 上边界 int leftMargin = 0; // 右边界 int rightMargin = 0; // 右边界 int bottomMargin = 0; // 下边界 int val = 0; // 某位置的数值 while (val for (int i = leftMargin; i val++; matrix[topMargin][i] = val; } topMargin++; for (int i = topMargin; i val++; matrix[i][n - 1 - rightMargin] = val; } rightMargin++; for (int i = n - 1 - rightMargin; i >= leftMargin; i--) { val++; matrix[n - 1 - bottomMargin][i] = val; } bottomMargin++; for (int i = n - 1 - bottomMargin; i >= topMargin; i--) { val++; matrix[i][leftMargin] = val; } leftMargin++; } return matrix; } }