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 ]
]
Solution:
Code:
<span style="font-size:14px;">class Solution {
public:
vector<vector<int> > generateMatrix(int n) {
vector<vector<int> > matrix(n, vector<int>(n, 0));
int index = 1;
for (int i = 0; i <= (n-1)/2; ++i) {
for (int j = i; j <= n-1-i; ++j)
matrix[i][j] = index++;
if (i == n-1-i) break;
for (int j = i+1; j <= n-2-i; ++j)
matrix[j][n-1-i] = index++;
for (int j = n-1-i; j >= i; --j)
matrix[n-1-i][j] = index++;
for (int j = n-2-i; j >= i+1; --j)
matrix[j][i] = index++;
}
return matrix;
}
};</span>