59. 螺旋矩阵 II
题目链接:59. 螺旋矩阵 II
代码如下:
class Solution
{
public:
vector<vector<int>> generateMatrix(int n)
{
if(n==1){return {{1}};}
vector<vector<int>> res(n,vector<int>(n));
int num=1;
int left=0,right=n-1,top=0,bottom=n-1;
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;
}
};