螺旋矩阵 ||
原题:
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1: 
输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
解题方法:
解法一:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n));
const int size = n * n;
int i = 0, j = 0, k = 1;
int left = 0, right = n - 1, up = 0, down = n - 1;
while (k <= n * n)
{
for (i = left; i <= right; i++) //1.遍历上方横排,遍历完之后,上方边界+1
{
res[j][i] = k;
k++;
}
i--;
up++;
for (j = up; j <= down; j++) //2.遍历右方横排,遍历完之后,右方边界-1
{
res[j][i] = k;
k++;
}
j--;
right--;
for (i = right; i >= left; i--) //3.遍历下方横排,遍历完之后,下方边界-1
{
res[j][i] = k;
k++;
}
i++;
down--;
for (j = down; j >= up; j--) //4.遍历左方横排,遍历完之后,左方边界+1
{
res[j][i] = k;
k++;
}
j++;
left++;
}
return res;
}
};
做题小结:
针对解法一:
- 参考54. 螺旋矩阵,使用同样的绕圈方法对初始生成的res二维数据进行一一赋值
- 需要注意res的声明方式,声明一个二维数组,则声明他的行数,以及它的内容,它的内容又为一个以列数为大小的数组
- 本题比54还要简单一点,因为是规整的n*n矩阵
