NO.19-顺时针打印矩阵
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
输入
[[1,2],[3,4]]
输出
[1,2,4,3]
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int>res;
if(matrix.empty()) return res;
int rl=0,rh=matrix.size()-1;//记录待打印矩阵的上下边缘
int cl=0,ch=matrix[0].size()-1;//记录待打印矩阵的左右边缘
while(1){
for(int i=cl;i<=ch;i++) res.push_back(matrix[rl][i]);//从左向右
if(++rl>rh) break;//超出边界,退出 ----->
for(int i=rl;i<=rh;i++) res.push_back(matrix[i][ch]);//从上往下
if(--ch<cl)break;//超出边界 向下
for(int i=ch;i>=cl;i--) res.push_back(matrix[rh][i]);//从右往左
if(--rh<rl)break;// <------
for(int i=rh;i>=rl;i--) res.push_back(matrix[i][cl]);//从下往上
if(++cl>ch)break;//向上
}
return res;
}