Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
class Solution {
public:
vector<vector<int> > generateMatrix(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int>> retVector(n);
vector<int> curVector(n);
for (int i=0; i<n; i++)
{
retVector[i] = curVector;
}
int size = n/2;
int count = 1;
for (int loop=0; loop<size; loop++)
{
for (int j=loop; j<n-1-loop; j++)
retVector[loop][j] = count++;
for (int k=loop; k<n-1-loop; k++)
retVector[k][n-1-loop] = count++;
for (int m=n-1-loop; m>=loop+1; m--)
retVector[n-1-loop][m] = count++;
for (int l=n-1-loop; l>=loop+1; l--)
retVector[l][loop] = count++;
}
if (n%2)
retVector[n/2][n/2] = count;
return retVector;
}
};