class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
int m = matrix.size(); //行数
int n = matrix[0].size(); //列数</int></int>
vector<int> res; //返回结果,若m*n == 0,则返回的也是空数组
if(m == 0 || n == 0)
return res;
int c1 = 0; //要打印的列的起始下标
int c2 = n-1; //要打印的列的终点下标
int r1 = 0; //要打印的行的起始下标
int r2 = m-1;//要打印的行的终点下标
while(c1 <= c2 && r1<=r2) //存在可打印的元素
{
//打印顶行
for(int j = c1; j<=c2; j++)
res.push_back(matrix[r1][j]);
r1++;
//打印右列
if(r1 <= r2)
{
for(int i = r1; i<=r2; i++)
res.push_back(matrix[i][c2]);
c2--;
}else
break;
//打印底行
if(c1<=c2)
{
for(int j = c2; j>=c1; j--)
res.push_back(matrix[r2][j]);
r2--;
}else
break;
//打印左列
if(r1<=r2)
{
for(int i = r2; i>=r1; i--)
res.push_back(matrix[i][c1]);
c1++;
}else
break;
}
return res;
}};

京公网安备 11010502036488号