题目链接:https://leetcode-cn.com/problems/spiral-matrix-ii/description/
题目描述
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解决方法
模拟法,模拟上下左右四个方向的路径,类似于第54题
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> result(n);
for (int i=0;i<n;i++)
result[i].resize(n);
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
result[i][j]=0;
int count=1,i=0,j=0;
while(count<=n*n){
while(j<n && !result[i][j]){ //向右
result[i][j++]=count++;
}
j--;i++;
while(i<n && !result[i][j]){ //向下
result[i++][j]=count++;
}
i--;j--;
while(j>=0 && !result[i][j]){ //向左
result[i][j--]=count++;
}
j++;i--;
while(i>=0 && !result[i][j]){ //向上
result[i--][j]=count++;
}
i++;j++;
}
return result;
}
};