Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
class Solution {
public:
vector<vector<int> > generateMatrix(int n) {
vector<vector<int> > res(n, vector<int>(n, 0));
if (n == 0) {
return res;
}
int beginX = 0, endX = n - 1;
int beginY = 0, endY = n - 1;
int cnt = 1;
while (cnt <= n*n) {
for (int i = beginX; i <= endX; i++) {
res[beginY][i] = cnt++;
}
beginY++;
for (int i = beginY; i <= endY; i++ ) {
res[i][endX] = cnt++;
}
endX--;
for (int i = endX; i >= beginX; i--) {
res[endY][i] = cnt++;
}
endY--;
for (int i = endY; i >= beginY; i--) {
res[i][beginX] = cnt++;
}
beginX++;
}
return res;
}
};
本文介绍了一个生成螺旋矩阵的算法,该算法接收一个整数n作为输入,并返回一个n×n的矩阵,矩阵中的元素从1到n²按螺旋顺序填充。通过四个方向的循环迭代,实现了矩阵的螺旋填充。
815

被折叠的 条评论
为什么被折叠?



