题目
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
解法一
思路
- 定义好方向
- 定义好是否访问过
代码
public int[][] generateMatrix(int n) {
int matrix[][] = new int[n][n];
int x = 0;
int y = 0;
int[] dx = {0, 1, 0, -1};
int[] dy = {1, 0, -1, 0};
int d = 0;
boolean[][] visited = new boolean[n][n];
for (int i = 1; i <= n * n; i++) {
matrix[x][y] = i;
visited[x][y] = true;
int a = x + dx[d];
int b = y + dy[d];
if (a < 0 || a >= n || b < 0 || b >= n || visited[a][b]) {
d = (d+1) % 4;
}
x = x + dx[d];
y = y + dy[d];
}
return matrix;
}