给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:

输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1 输出:[[1]]
提示:
1 <= n <= 20通过次数
361.6K
提交次数
503.1K
通过率
71.9%
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:

输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1 输出:[[1]]
提示:
1 <= n <= 20通过次数
361.6K
提交次数
503.1K
通过率
71.9%
与第54题一样的方法,也是从最外层到最里层的方法,第54题是矩阵生成序列,这个是序列生成矩阵。螺旋矩阵
- class Solution {
- public:
- vector
int>> generateMatrix(int n) { - vector
int>> ans(n,vector<int>(n,0)); - int up=0,down=n-1,right=n-1,left=0;
- int num=1;
- while(true)
- {
- for(int i=left;i<=right;i++)
- {
- ans[up][i]=num;
- num++;
- }
- if(++up>down) break;
- for(int i=up;i<=down;i++)
- {
- ans[i][right]=num;
- num++;
- }
- if(--right
break; - for(int i=right;i>=left;i--)
- {
- ans[down][i]=num;
- num++;
- }
- if(--down
break; - for(int i=down;i>=up;i--)
- {
- ans[i][left]=num;
- num++;
- }
- if(++left>right) break;
- }
- return ans;
- }
- };