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> > res(n,vector<int>(n,));
int dx[] = {,,,-};
int dy[] = {,,-,};
int cnt = ,step = ,x = , y = ;
while(cnt <= n*n){
step%=;
res[x][y] = cnt++;
if(x+dx[step] >=n || x+dx[step] < || y+dy[step] >=n || y+dy[step] < || res[x+dx[step]][y+dy[step]]) step++;
x+=dx[step%];y+=dy[step%];
}
return res;
}
};