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;}
};