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