力扣练习第二十天——螺旋矩阵 II
题目大致如下:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
链接来源于LeetCode:https://leetcode-cn.com/problems/spiral-matrix-ii/
大致思路:
这道题与上一题的思路无异,依旧是去设置边界条件来限制数的填充进程。并且这道题在改变之后更加接近于之前所说的黑书中的蛇形填数。代码变得更为简洁。
代码大致如下:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> aim(n, vector<int>(n));
for(int s = 0, e = n - 1, m = 1; s<=e ; s++,e--){
for (int j = s; j <= e; j++) aim[s][j] = m++;
for (int i = s+1; i <= e; i++) aim[i][e] = m++;
for (int j = e-1; j >= s; j--) aim[e][j] = m++;
for (int i = e-1; i >= s+1; i--) aim[i][s] = m++;
}
return aim;
}
};
结果大致为: