给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
if(n==0)
return vector<vector<int>> ();
vector<vector<int>> ret(n,vector<int>(n,0));
int rowb=0,rowe=n-1,colb=0,cole=n-1,num=1;
while(rowb<=rowe&&colb<=cole)
{
if(num<=n^2)
{
for(int i=colb;i<=cole;i++)
{
ret[rowb][i]=num;
num++;
}
}
rowb++;
if(num<=n^2)
{
for(int i=rowb;i<=rowe;i++)
{
ret[i][rowe]=num;
num++;
}
}
cole--;
if(num<=n^2)
{
for(int i=cole;i>=colb;i--)
{
ret[rowe][i]=num;
num++;
}
}
rowe--;
if(num<=n^2)
{
for(int i=rowe;i>=rowb;i--)
{
ret[i][colb]=num;
num++;
}
}
colb++;
}
return ret;
}
};