地址:https://leetcode.com/problems/spiral-matrix-ii/
题目:
Given a positive integer n, generate a square matrix filled with elements from 1 to
n
2
n^2
n2 in spiral order.
Example:
理解:
比Spiral Matrix还简单,一样的思路,这里肯定是方阵,还免去了判断是否会有不构成矩形的情况。
实现:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int x1 = 0, y1 = 0;
int x2 = n - 1, y2 = n - 1;
vector<vector<int>> res(n, vector<int>(n));
int cnt = 1;
while (x1 <= x2&&y1 <= y2) {
for (int j = y1; j <= y2; ++j) {
res[x1][j] = cnt++;
}
++x1;
for (int i = x1; i <= x2; ++i) {
res[i][y2] = cnt++;
}
--y2;
for (int j = y2; j >= y1; --j) {
res[x2][j] = cnt++;
}
--x2;
for (int i = x2; i >= x1; --i) {
res[i][y1] = cnt++;
}
++y1;
}
return res;
}
};