class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
//二维数组初始化
// int dis[4][4]={{-1,0},{1,0},{0,-1},{0,1}};
int dis[4][4]={{0,1},{1,0},{0,-1},{-1,0}};
//右下左上 0,1,2,3
//cout<< dis[0][0]<<" "<<dis[0][1];
vector<vector<int>>ans(n,vector<int>(n));
vector<vector<int>>flag(n,vector<int>(n,-1));
// for(int i=0;i<n;i++){
// for(int j=0;j<n;j++){
// cout<<flag[i][j];
// }
// }
int k=0;
long long m=n*n;
long long cnt=1;
int i=0,j=0;
while(cnt<=m){
if(i<n&&j<n&&flag[i][j]==-1){
ans[i][j]=cnt;
flag[i][j]=1;
cnt++;
}
if(j+dis[k][1]==n){
k=(k+1)%4;
}
else if(i+dis[k][0]==n){
k=(k+1)%4;
}
else if(j+dis[k][1]<0){
k=(k+1)%4;
}else if(flag[i+dis[k][0]][j+dis[k][1]]==1){
k=(k+1)%4;
}
i=dis[k][0]+i;
j=j+dis[k][1];
}
return ans;
}
};
59.螺旋矩阵II
该代码定义了一个名为`generateMatrix`的函数,用于生成一个nxn的二维数组,其中每个元素按照特定的路径规则填充递增的数字。通过四个方向的移动(上、下、左、右),确保不重复访问已标记的元素。
摘要由CSDN通过智能技术生成