一,问题描述
二,问题分析
三,代码解答
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int top = 0;
int right = n-1;
int left = 0;
int bottom = n-1;
int num = 1;
vector<vector<int>> res(n,vector<int>(n,0));
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;
}
};