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++;
}
}