文章目录
- 题目描述
- 法一 模拟
题目描述
法一 模拟
初始化一个二维向量,名为matrix,它有n行和n列。向量的每个元素都是一个整数,初始化为0。初始化二维向量的语法如下:
vector<vector<int>> matrix(n, vector<int>(n));
。第一个参数n指定矩阵的行数,第二个参数vector(n)指定矩阵的列数。第二个参数创建了一个大小为n的向量,每个元素都初始化为0,并且这个向量用于初始化矩阵的每一行。因此,这行代码创建了一个有n行和n列的二维向量,其中每个元素都初始化为0。
class Solution {
public:
vector<vector<int>> generateMatrix(int n){
int curNum=1, maxNum=n*n;
vector<vector<int>> matrix(n, vector<int>(n));
int r=0, c=0, dr=0;
vector<vector<int>> directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
while(curNum<=maxNum){
matrix[r][c] = curNum;
curNum++;
int nextr = r + directions[dr][0], nextc = c + directions[dr][1]; //模拟下一步状态
if(nextr<0 || nextr>=n || nextc<0 || nextc>=n || matrix[nextr][nextc]!=0){
dr = (dr+1)%4; //保证4个方向
}
r = r + directions[dr][0];
c = c + directions[dr][1];
}
return matrix;
}
};