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) {
int i=0,j=0,k=0,l=0,r=n*n;
vector<vector<int> > matrix(n,vector<int>(n));
for(;k<=n>>1;k++){
for(;j<n-k&&l<r;j++){//left->right
l++;
matrix[i][j]=l;
}
j--;
i++;
for(;i<n-k&&l<r;i++){//up->down
l++;
matrix[i][j]=l;
}
i--;
j--;
for(;j>=k&&l<r;j--){//right->left
l++;
matrix[i][j]=l;
}
j++;
i--;
for(;i>k&&l<r;i--){//down->up
l++;
matrix[i][j]=l;
}
i++;
j++;
}
return matrix;
}
};