给你一个正整数 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 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class Solution { public int[][] generateMatrix(int n) { List<Integer> ans = new ArrayList<Integer>(); int[][] matrix = new int[n][n]; int num = 1; int upper = 0; int down = matrix.length - 1; int left = 0; int right = matrix[0].length - 1; while(true){ for(int i = left; i <= right; i++) matrix[upper][i] = num ++; upper ++; if(upper > down) break; for(int i = upper; i <= down; i++) matrix[i][right] = num ++; right --; if(right < left) break; for(int i = right; i >= left; i--) matrix[down][i] = num ++; down --; if(down < upper) break; for(int i = down; i >= upper; i--) matrix[i][left] = num ++; left ++; if(left > right) break; } return matrix; } }
|
时间复杂度:$O(n^2)$