题目
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
解题思路
这道题目不涉及算法,是个模拟题,我的方法是参考了网上资料,设定了四条边的值,用四个循环来分别模拟一轮从左至右、从上至下、从右至左、从下至上的过程。
代码如下
//设定边界的模拟法
#include <vector>
using namespace std;
class Solution
{
public:
vector<vector<int>> generateMatrix(int n)
{
int num = 1;
int top = 0, left = 0, right = n - 1, bottom = n - 1;
//初始化数组
vector<vector<int>> res(n, vector<int>(n));
while (num <= n * n)
{
for (int i = left; i <= right; ++i) res[top][i] = num++;
++top;
for (int i = top; i <= bottom; ++i) res[i][right] = num++;
--right;
for (int i = right; i >= left; --i) res[bottom][i] = num++;
--bottom;
for (int i = bottom; i >= top; --i) res[i][left] = num++;
++left;
}
return res;
}
};