struct Node {
int row, col;
//定义4个方向
//右 下 左 上
} obj[4]{{0, 1},
{1, 0},
{0, -1},
{-1, 0}};
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> v(n);
for (int i = 0; i < n; i++)
v[i].resize(n);
int beginRow = n - 1;
int beginCol = n - 1;
int finalRow = 0;
int finalCol = 0;
//默认向右
int num = 2;
int row = 0, col = 0;
int cur = 0;
v[row][col] = 1;
while (num <= n * n) {
row += obj[cur].row;
col += obj[cur].col;
v[row][col] = num++;
if (col == beginCol && cur == 0)
cur = 1, finalRow++;
else if (row == beginRow && cur == 1)
cur = 2, beginRow--;
else if (col == finalCol && cur == 2)
cur = 3, finalCol++;
else if (row == finalRow && cur == 3)
cur = 0, beginCol--;
}
return v;
}
59. 螺旋矩阵 II
最新推荐文章于 2024-04-11 22:32:47 发布