题目描述:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
方法1:
主要思路:
(1)模拟顺时针,处理好边界即可;
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n,vector<int>(n,0));
int lable=1;
int left=0;
int right=n-1;
int top=0;
int down=n-1;
while(left<=right&&top<=down){
for(int i=left;i<=right;++i){//小于等于right
res[top][i]=lable++;
}
for(int i=top+1;i<=down;++i){//小于等于down
res[i][right]=lable++;
}
if(left<right&&top<down){//边界的处理
for(int i=right-1;i>left;--i){
res[down][i]=lable++;
}
for(int i=down;i>top;--i){
res[i][left]=lable++;
}
}
++left;
--right;
++top;
--down;
}
return res;
}
};