可以用一个循环来打印矩阵,每次打印矩阵中的一个圈。
/*
输入一个矩阵matrix,将其按顺时针顺序存入一维数组array中
*/
vector<int> printMatrix(vector<vector<int>> matrix)
{
vector<int> array;//一维数组
if(matrix.empty())
return array;//如果矩阵为空,输出空的一维数组
int row = matrix.size();//矩阵的行宽
int col = matrix[0].size();//矩阵的列宽
int start = 0;//每一圈的起始座标
while(row > start * 2 && col > start * 2)//总的结束条件
{
int endX = col - start - 1;//每行结束的座标
int endY = row - start - 1;//每列结束的座标
for(int i = start; i <= endX; i++)//从左向右打印
array.push_back(matrix[start][i]);
if(start < endY)//从上向下打印
for(int i = start + 1; i <= endY; i++)
array.push_back(matrix[i][endX]);
if(start < endX && start < endY)//从右向左打印
for(int i = endX - 1; i >= start; i--)
array.push_back(matrix[endY][i]);
if(start < endX && start < endY - 1)//从下向上打印
for(int i = endY - 1; i > start; i--)
array.push_back(matrix[i][start]);
start++;//起始座标自增
}
return array;//返回一维数组
}