题目描述:

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

示例:

输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

思路:本题思路同​​螺旋矩阵​​相同,只需要在遍历这个矩阵的过程中不断增加LeetCode_59. 螺旋矩阵 II_初始化的值(初始化为1)即可

class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n,vector<int>(n));//创建二维数组
int up=0;
int down=n-1;
int left=0;
int right=n-1;
int num=1;
while(true){
for(int i=left;i<=right;i++){
res[up][i]=num++;
}
if(++up>down)
break;
for(int i=up;i<=down;i++){
res[i][right]=num++;
}
if(--right<left)
break;
for(int i=right;i>=left;i--){
res[down][i]=num++;
}
if(--down<up)
break;
for(int i=down;i>=up;--i){
res[i][left]=num++;
}
if(++left>right)
break;
}
return res;
}
};

LeetCode_59. 螺旋矩阵 II_螺旋矩阵_02