Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ret(n,vector<int>(n,0));
int k=1,i=0,j=0;
while(k<=n*n)
{
j=i;
while(j<n-i)
ret[i][j++]=k++;
j=i+1;
while(j<n-i)
ret[j++][n-i-1]=k++;
j=n-i-2;
while(j>i)
ret[n-i-1][j--]=k++;
j=n-i-1;
while(j>i)
ret[j--][i]=k++;
i++;
}
return ret;
}
};