59.螺旋矩阵2
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
示例 1:
1 2
| 输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]
|
示例 2:
Solution:和54题思路一样,模拟边界
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Solution { public int[][] generateMatrix(int n) { int upper = 0; int down = n- 1; int left = 0; int right = n- 1; int[][] matrix=new int [n][n]; int cnt=1; while(true){ for(int i = left; i <= right; i++) matrix[upper][i]=cnt++; if(++upper > down) break; for(int i = upper; i <= down; i++) matrix[i][right]=cnt++; if(--right < left) break; for(int i = right; i >= left; i--) matrix[down][i]=cnt++; if(--down < upper) break; for(int i = down; i >= upper; i--) matrix[i][left]=cnt++; if(++left > right) break; } return matrix; } }
|