给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
code
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
if(n<1)
return {};
vector<vector<int>> matrix(n,vector<int>(n));
int counter=1;
int up=0,down=n-1,right=n-1,left=0;
while(counter<=n*n){
for(int j=left;j<=right;++j)
matrix[up][j]=counter++;
if(++up>down)break;
for(int i=up;i<=down;++i)
matrix[i][right]=counter++;
if(left>--right)break;
for(int j=right;j>=left;--j)
matrix[down][j]=counter++;
if(up>--down)break;
for(int i=down;i>=up;--i)
matrix[i][left]=counter++;
if(++left>right)break;
}
return matrix;
}
};