题目描述
给定一个正整数 nn,请生成一个矩阵,将1到 n2n2 蛇形排列好。
样例
输入:
3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路
和上一题基本类似,只不过取元素变成了添加元素,主要学习了如何初始化二维向量这个知识点
vector<vector> v(r, vector(c, 0));
生成一个v行c列,初始值是0的二维向量
代码
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int up = 0,down=n-1,left=0,right=n-1;
vector<vector<int>> res(n,vector<int>(n,0));//初始化二维向量
int k=0;
while(true){
for(int j = left;j<=right;j++) res[up][j]=++k;//添加元素
if(++up>down) break;
for(int i = up;i<=down;i++) res[i][right]=++k;
if(--right<left) break;
for(int j = right;j>=left;j--) res[down][j]=++k;
if(--down<up) break;
for(int i = down;i>=up;i--) res[i][left]=++k;
if(++left>right) break;
}
return res;
}
};