可以用一個循環來打印矩陣,每次打印矩陣中的一個圈。
/*
輸入一個矩陣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;//返回一維數組
}