螺旋矩阵 II
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
示例 1:
1 2
| 输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]
|
示例 2:
提示:
经典模拟题。做过好多遍了,每次写都忘。
定义两个数组,模拟移动方向
1 2 3 4 5
| int[] dx = {0,1,0,-1}; int[] dy = {1,0,-1,0}; int d = 0;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public int[][] generateMatrix(int n) { int[] dx = {0,1,0,-1}; int[] dy = {1,0,-1,0}; int [][] matrix = new int[n][n]; int x=0,y=0,d=0; for(int i=1;i<=n*n;i++){ matrix[x][y]=i; int next_x=x+dx[d]; int next_y=y+dy[d]; if(next_x<0||next_x>=n||next_y<0||next_y>=n||matrix[next_x][next_y]!=0){ d=(d+1)%4; next_x=x+dx[d]; next_y=y+dy[d]; } x=next_x; y=next_y; } return matrix; } }
|