代码随想录:螺旋矩阵 II
代码随想录:螺旋矩阵 II
题目是不难的,本质是重复多次顺时针旋转,注意边界条件。
我第一次写错是二维数组的运用出了问题,vec[i][j]中,i代表行,j代表列,我的脑袋是明白的,但是在运用时,一开始二维矩阵向右遍历时,其实变的是j而非i
另外注意一下二维vector的建立就行
//二维vector数组本质上是一个存放了一维vector数组的vector
vector<vector<int>> res(n, vector<int>(n,0))
vector<数据类型>
vectoc(几个,什么东西)
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n, 0));
int loop = n / 2;
int target = n % 2;
int start = 0;
int end = n;
int num = 1;
int i = 0;
int j = 0;
if (target == 1) {
res[loop][loop] = n * n;
}
while (loop > 0) {
for (i = start; i < end - 1; i++) {
res[start][i] = num;
num++;
}
for (j = start; j < end - 1; j++) {
res[j][end - 1] = num;
num++;
}
for (; i > start; i--) {
res[end - 1][i] = num;
num++;
}
for (; j > start; j--) {
res[j][start] = num;
num++;
}
start++;
end--;
loop--;
}
return res;
}
};