class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定义一个二维数组
int startx = 0;
int starty = 0;
int offset = 1;
int i = 0;
int j = 0;
int count = 1;
//循环次数
int loop = n/2;
while(loop--){
//这里每一次循环都要调整i和j的位置
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++;
//第二圈开始时,每一圈终止位置相对移动1
offset++;
}
if(n%2)
res[n/2][n/2]=count;
return res;
}
};