class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
// 顺时针递加,主要问题是边界
int row_start=0;
int row_end = n-1;
int col_start=0;
int col_end = n-1;
vector<vector<int>> matrix(n,vector<int>(n,0));
int num = 1;
while(row_start<=row_end&&col_start<=col_end){
// 开始时走第一行,行不变列变
for(int j=col_start;j<=col_end;j++){
matrix[row_start][j] = num++;
cout<<matrix[row_start][j]<<" ";
}
cout<<endl;
// 走完第一行后,将row_start,向下走一位
row_start++;
// 走最后一列,列不变行变
for(int i=row_start;i<=row_end;i++){
matrix[i][col_end] = num++;
cout<<matrix[i][col_end]<<" ";
}
cout<<endl;
// 走完最后一列 ,将最后一列向前移动一位
col_end--;
// 走最后一行,列变行不变
for(int j = col_end;j>=col_start;j--){
matrix[row_end][j] = num++;
cout<<matrix[row_end][j]<<" ";
}
cout<<endl;
// 走完最后一行,将最后一行向上移动一位
row_end--;
// 走第一列,行变列不变
for(int i=row_end;i>=row_start;i--){
matrix[i][col_start]=num++;
cout<<matrix[i][col_start]<<" ";
}
cout<<endl;
// 走完第一列,将第一列向后移动 一位
col_start++;
// 此时最外一层加入完毕
}
return matrix;
}
};
LeetCode; 59.螺旋矩阵II; 标签:数组
最新推荐文章于 2025-04-30 16:36:16 发布