【second】Spiral Matrix II
vector<vector<int> > generateMatrix(int n) { // Note: The Solution object is instantiated only once and is reused by each test case. int start = 0; vector<vector<int>> res(n,vector<int>(n)); if(n<=0) return res; int cnt = 1; while(2*start<n) { generateCircle(start,n-1-start,cnt,res); ++start; } return res; } void generateCircle(int start,int end,int& cnt,vector<vector<int>>& res) { int i; for(i=start;i<=end;i++) res[start][i] = cnt++; if(start<end) { for(i=start+1;i<=end;i++) res[i][end] = cnt++; for(i=end-1;i>=start;i--) res[end][i] = cnt++; } if(start+1<end) { for(i=end-1;i>=start+1;i--) res[i][start] = cnt++; } }