原题地址:https://leetcode.com/problems/spiral-matrix-ii/description/
题目描述:
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
题解:
给出一个整型n,创建一个大小按顺时针增长的行列均为n的矩阵。解法和上一题相同,在已知n的情况下只需创建一个n*n的空矩阵,再按打印的方法将数字填进去就行。
代码:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
if (n == 0) return vector<vector<int>>();
int x = 0, y = 0;
int cntNumber = n*n;
int count = 0, queryNum = 0;
vector<vector<int>> output(n, vector<int>(n));
while (true) {
for (; y < n - queryNum; y++) {
output[x][y] = ++count;
}
y--;
x++;
if (count == cntNumber) break;
for (; x < n - queryNum; x++) {
output[x][y] = ++count;
}
x--;
y--;
if (count == cntNumber) break;
for (; y >= queryNum; y--) {
output[x][y] = ++count;
}
y++;
x--;
if (count == cntNumber) break;
for (; x > queryNum; x--) {
output[x][y] = ++count;
}
x++;
y++;
if (count == cntNumber) break;
queryNum++;
}
return output;
}
};
21 / 21 test cases passed.
Status: Accepted
Runtime: 3 ms