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 ] ]
思路:同spiral I
class Solution { public: vector<vector<int> > generateMatrix(int n) { vector<vector<int> > a; if (n<=0) { return a; } vector<vector<int> > res(n, vector<int>(n, 0)); int i=0,j,num=0; while(2*i<n) { for(j=i; j<n-i; ++j) { num++; res[i][j] = num; } for(j=i+1; n-i-1>i&&j<n-i; ++j) { num++; res[j][n-i-1] = num; } for(j=n-i-2; i<n-i-1&&j>=i; --j) { num++; res[n-i-1][j] = num; } for(j=n-i-2; j>i; --j) { num++; res[j][i] = num; } ++i; } return res; } };