题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
思路:
直接看代码就好了…注意输入是一行或者一列的情况
从右往左打印的时候要求up
code
class Solution {
public:
/*
case1
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
case2
1 2 3
4 5 6
7 8 9
case3
1 2 3
4 5 6
7 8 9
10 11 12
case4
1 2 3 4
5 6 7 8
9 10 11 12
case5
1 2 3 4
case6
1
2
3
4
*/
vector<int> printMatrix(vector<vector<int> > matrix) {
int row=matrix.size();
int col=matrix[0].size();
int left=0,right=col-1;
int up=0,down=row-1;
vector<int>res;
while(left<=right&&up<=down){
for(int i=left;i<=right;++i){
//cout<<matrix[up][i];
res.push_back(matrix[up][i]);
}
for(int i=up+1;i<=down;++i){
//cout<<matrix[i][right];
res.push_back(matrix[i][right]);
}
for(int i=right-1;i>=left&&up<down;--i){//up<down是为了保证如果是一行的话不从右往左
//cout<<matrix[down][i];
res.push_back(matrix[down][i]);
}
for(int i=down-1;i>=up+1&&left<right;--i){//left<right是为了保证如果是一列的话不从下往上
//cout<<matrix[i][left];
res.push_back(matrix[i][left]);
}
up++;
down--;
left++;
right--;
}
return res;
}
};