n*n的矩阵,顺时针递增赋值
若n为奇数,则最后一圈是 从左到右赋值
若n为偶数,则最后一圈是 从左到右 从上到下 从右到左赋值
代码如下:
class Solution
{
public:
vector<vector<int>> generateMatrix(int n)
{
vector<vector<int>> res(n,vector<int>(n,0));
int c=(n+1)/2;
int _add=0;
int k=1;
while(c--)
{
//从左到右赋值
for(int i=_add;i<n-_add;++i)
{
res[_add][i]=k++;
}
if(c==0 && n%2==1)
break;
//从上到下赋值
for(int i=_add+1;i<n-_add;++i)
{
res[i][n-_add-1]=k++;
}
//从右到左赋值
for(int i=n-_add-2;i>=_add;--i)
{
res[n-_add-1][i]=k++;
}
if(c==0 && n%2==0)
break;
//从下到上赋值
for(int i=n-_add-2;i>=_add+1;--i)
{
res[i][_add]=k++;
}
_add++;
}
return res;
}
};