题目:
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
分析:先构造一个矩阵来存螺旋矩阵,再将螺旋矩阵存入vector。
代码如下:
vector<vector<int> > generateMatrix(int n) {
vector<vector<int> > result;
if(n<=0)return result;
int i;
int **matrix=new int*[n];
for(i=0;i<n;i++)
{
matrix[i]=new int[n];
}
int begin=0,cont=1,end=n-1;
while(begin<=end)
{
for(i=begin;i<=end;i++)matrix[begin][i]=cont++;
for(i=begin+1;i<=end;i++)matrix[i][end]=cont++;
for(i=end-1;i>=begin&&end>begin;i--)matrix[end][i]=cont++;
for(i=end-1;i>begin&&end>begin;i--)matrix[i][begin]=cont++;
begin++;end--;
}
for(i=0;i<n;i++)
{
vector<int> temp;
for(int j=0;j<n;j++)
{
temp.push_back(matrix[i][j]);
}
result.push_back(temp);
}
for(i=0;i<n;i++)
{
delete []matrix[i];
}
delete []matrix;
return result;
}