給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。
輸入: 3
輸出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> matrix(n);
for (int i = 0; i < matrix.size(); i++)
matrix[i].resize(n);
int R = n-1;
int L = 0;
int U = 0;
int D = n-1;
int num=1;
while(true){
for(int i=L;i<=R;i++)matrix[U][i]=num++;
if(++U>D) break;
for(int i=U;i<=D;i++)matrix[i][R]=num++;
if(--R<L) break;
for(int i=R;i>=L;i--)matrix[D][i]=num++;
if(--D<U) break;
for(int i=D;i>=U;i--)matrix[i][L]=num++;
if(++L>R)break;
}
return matrix;
}
};