59. 螺旋矩阵 II
题目描述:
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
考察重点:way数组记录走的方向,结合DFS实现矩阵螺旋遍历。
int way[][] = new int[][]{{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
int [][]res;
public int[][] dfs(int m, int num, int x, int y){if(m == 4)m = 0;if(res[x+way[m][0]][y+way[m][1]] != 0)return res;while(true){x = x + way[m][0];y = y + way[m][1];if((x < 0 || x >= res.length || y < 0 || y >= res.length) || res[x][y] != 0) {x = x - way[m][0];y = y - way[m][1];break;}res[x][y] = num++;}return dfs(m + 1, num, x, y);
}
public int[][] generateMatrix(int n) {res = new int[n][n];res[0][0] = 1;if(n == 1)return res;return dfs(0, 2, 0, 0);
}