题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 1213 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>line,res;
int c[2000][2000];
while(matrix.size()>0){
vector<int>line=matrix[0];
for(int i=0;i<line.size();i++){
res.push_back(line[i]);
}
matrix.erase(matrix.begin());
int row=matrix.size();
int col=matrix[0].size();
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
c[col-1-j][i]=matrix[i][j];
}
}
matrix.clear();
for(int i=0;i<col;i++){
line.clear();
for(int j=0;j<row;j++){
line.push_back(c[i][j]);
}
matrix.push_back(line);
}
}
return res;
}
};