
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 ]]
vector<vector<int> > generateMatrix(int n) { vector<vector<int> >matrix(n,vector<int>(n,0)); int ux=0, uy=0, dx=n-1, dy=n-1; int count = 0; while(ux < dx && uy < dy){ for(int i=uy; i<dy; i++){ count++; matrix[ux][i] = count; } for(int i=ux; i<dx; i++){ count++; matrix[i][dy] = count; } for(int i=dy; i>uy; i--){ count++; matrix[dx][i] = count; } for(int i=dx; i>ux; i--){ count++; matrix[i][uy] = count; } ux++;dx--; uy++;dy--; } if(ux == dx && uy == dy){ matrix[ux][uy] = (++count); } return matrix; }




近期评论