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:
std::vector > generateMatrix(int n) {
std::vector> matrix(n,std::vector(n,0));
int start = 0, end = n - 1;
int step = 1;
while(start < end)
{
for (int i = start; i < end; i++)
{
matrix[start][i] = step++;
}
for (int i = start; i < end; i++)
{
matrix[i][end] = step++;
}
for(int i = end; i > start; i--)
{
matrix[end][i] = step++;
}
for(int i = end; i > start; i--)
{
matrix[i][start] = step++;
}
start++;
end--;
}
if(start == end)
{
matrix[start][end] = step++;
}
return matrix;
}
};