输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
解题思路:
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int> s;
int i,j,c,b,layer,k=0;
int row=matrix.size();
int col=matrix[0].size();
layer=((row>col?col:row)-1)/2+1;//需要循环的次数
while(k<layer)
{
i=k;
for(j=k;j<col-k;j++)//从左到右
s.push_back(matrix[i][j]);
j--;//当前已保存的矩阵的所在列
for(i=k+1;i<row-k;i++)//从上到下
s.push_back(matrix[i][j]);
i--;//当前已保存的矩阵所在行
for(j=col-2-k;j>=k&&i>k;j--)
//从右到左,并且要满足所操作行不是从左到右的已经保存过的行
s.push_back(matrix[i][j]);
j++;
for(i=row-2-k;i>k&&j<col-1-k;i--)
//从下到上,并且要满足所操作行不是从上到下的已经保存过的行
s.push_back(matrix[i][j]);
i++;
k++;
}
return s;
}
};