给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定义一个二维数组
//思路 左闭右开 每次循环一圈 边界+1
int startx =0;
int starty =0;
int loop = n/2; //循环次数
int offside =1;
int mid = n/2; //中心
int count =1;
int i;
int j;
while(loop--){
//从左到右
int i =startx;
int j= starty;
for(j;j< n-offside;j++){
res[i][j]=count;
count++;
}
//从上到下
for(i;i<n-offside;i++){
res[i][j]=count;
count++;
}
//从左到右
for(j;j>starty;j--){
res[i][j]=count;
count++;
}
//从下到上
for(i;i>startx;i--){
res[i][j]=count;
count++;
}
startx++;
starty++;
offside++;
}
//判断是否是奇数
if(n%2==1){
res[mid][mid]=count;
}
return res;
}
};