给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
水题。。。想起以前被回型矩阵蛇形矩阵各种花里胡哨矩阵支配的恐惧。。
模拟一下就好了,新学会了用vector定义二维数组
class Solution { public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> ans(n, vector<int>(n, 0));//vector定义二维数组 int now=1,nx=0,ny=0; int tp=1;//1是往右 2是往下 3是往左 4是往上 while(now<=n*n){ if(ans[nx][ny]==0)ans[nx][ny]=now++; if(tp==1){ ny++; if(ny==n||ans[nx][ny]!=0){ nx++;tp=2;ny--; } } else if(tp==2){ nx++; if(nx==n||ans[nx][ny]!=0){ ny--;tp=3;nx--; } } else if(tp==3){ ny--; if(ny== -1||ans[nx][ny]!=0){ nx--;tp=4;ny++; } } else if(tp==4){ nx--; if(nx== -1||ans[nx][ny]!=0){ ny++;tp=1;nx++; } } } return ans; } };