class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<int> dirx,diry;
dirx = {0,1,0,-1};
diry = {1,0,-1,0};
vector<vector<int> > ans(n,vector<int>(n,0));
int level = n-1;
int key = 1;
int locx = 0;
int locy = 0;
while(level>0){
// 枚举4个方向
for(int i=0;i<4;i++){
for(int j=0;j<level;j++){
ans[locx][locy] = key++;
locx += dirx[i];
locy += diry[i];
}
}
level-=2;
// 向右下移动
locx ++;
locy ++;
}
if(level == 0)
ans[locx][locy] = key;
return ans;
}
};
No.191 - LeetCode59. Spiral Matrix II - 经典 - 蛇形数字 - 入门Coding
螺旋矩阵生成算法解析
本文深入探讨了螺旋矩阵生成算法的实现细节,通过定义方向向量和层级变量,该算法能够在二维数组中按螺旋顺序填充整数,从外圈向内圈逐层递进,直至填满整个矩阵。

被折叠的 条评论
为什么被折叠?



