// C++
// 基于步数进行填充,不用再考虑n是奇数还是偶数,不用再填充中心那个最大的数。
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定义一个二维数组
int i = 0;
int j = 0;
int num = 1;
int flag = 0;
// 先把第一行填充好
for (; j < n; j++, num++){
res[i][j] = num;
}
j--;
int len = n; // 基于步数进行填充
for (;len > 0; len--){
if (flag == 0){ // 向下然后向左走
for(int a = 1; a < len; a++, num++){
i++;
res[i][j] = num;
}
for(int a = 1; a < len; a++, num++){
j--;
res[i][j] = num;
}
flag = 1;
} else{ // 向上然后向右走
for(int a = 1; a < len; a++, num++){
i--;
res[i][j] = num;
}
for(int a = 1; a < len; a++, num++){
j++;
res[i][j] = num;
}
flag = 0;
}
}
return res;
}
};
感觉这样写会稍微简单一点。。。