螺旋矩阵 II
螺旋矩阵 II
问题描述:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii
思路:
和上一个螺旋矩阵的思路基本是一样的,详情见 螺旋矩阵
不同的是,本题是通过循环次数n×n来控制循环的。
题解:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int u, d, l, r;
u = 0;
l = 0;
d = n - 1;
r = n - 1;
int count = 1;
vector<vector<int>> ret;
ret.resize(n);
for (int i = 0; i < n; i++) {
ret[i].resize(n);
}
while (count <= n * n) {
for (int i = l; i <= r; i++) {
ret[u][i] = count;
count++;
}
u++;
for (int i = u; i <= d; i++) {
ret[i][r] = count;
count++;
}
r--;
for (int i = r; i >= l; i--) {
ret[d][i] = count;
count++;
}
d--;
for (int i = d; i >= u; i--) {
ret[i][l] = count;
count++;
}
l++;
}
return ret;
}
};