题目链接: 59. 螺旋矩阵 II - 力扣(LeetCode)
题目描述

解题思路
- 我们得到一个正整数N,然后我们将创造一个二维数组
- 我们将1-N*N之间的所有数字都给他插入进入这个二维数组
- 首先我们到达第一层最末尾的时候,我们往下面走
- 当我们到达第一个最下面的时候,我们往左边走
- 到另外一个端点的时候,我们往上面走,这个过程我们会不断的发现边界进行缩小
- 如果说N为奇数情况的话。最后一个格子的数字需要我们手动填充
- 将这个二维数组返回回去
代码实现
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n,vector<int>(n,0));
int startX=0,startY=0;
int loop=n/2;
int mid=n/2;
int count=1;
int offset=1;
int i,j;
while(loop--){
i=startX;
j=startY;
for(j=startY;j<n-offset;j++){
res[startX][j]=count++;
}
for(i=startX;i<n-offset;i++){
res[i][j]=count++;
}
for(;j>startY;j--){
res[i][j]=count++;
}
for(;i>startX;i--){
res[i][j]=count++;
}
startX++;
startY++;
offset++;
}
if(n%2){
res[mid][mid]=count;
}
return res;
}
};