输出螺旋增长的矩阵,两次AC注意n=0的情况
class Solution { public: vector<vector<int> > generateMatrix(int n) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. vector<vector<int>> ans(n); if(n == 0) { ans.clear(); return ans; } int **map = new int <em>[n]; for(int i = 0;i < n;i++) { map[i] = new int[n]; }<br /> int val = 1; int x = 0; int y = 0; int dir = 1;//1右 2下 3左 4上 int r1 = -1; int r2 = n; int l1 = -1; int l2 = n; while(true) { map[x][y] = val; switch(dir) { case 1: y++; if(y == l2) { dir = 2; y--; x++; r1++; } break; case 2: x++; if(x == r2) { dir = 3; x--; y--; l2--; } break; case 3: y--; if(y == l1) { dir = 4; y++; x--; r2--; } break; case 4: x--; if(x == r1) { dir = 1; x++; y++; l1++; } break; } if(val == n</em>n) break; val++; } for(int i = 0 ;i < n;i++) { vector<int> tmp(n); for(int j = 0;j < n;j++) { tmp[j] = map[i][j]; } ans[i] = tmp; } return ans; } };