题目描述
给定一个整型矩阵matrix,请按照顺时针转圈的方式打印它。
示例1
输入
复制
[[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]
题解:
题意很明确,就是让顺时针走矩阵
直接模拟就行
如图一样,设
int end=n-1; int beg=0; int l=0; int r=m-1;
四个变量,分别表示矩形的上下和左右,然后按照图中红色箭头的顺序一样存入vector<int>sum内即可
当(end = = beg)时,说明行的已经取完,就不用再取了
(l = = r)时也是一样
自己模拟模拟过程就能感受出来</int>
代码:
class Solution { public: /** * * @param matrix int整型vector<vector<>> the matrix * @return int整型vector */ vector<int> printMatrix(vector<vector<int> >& matrix) { // write code here int n=matrix.size();//lie int m=matrix[0].size();//hang vector<int>sum; int end=n-1; int beg=0; int l=0; int r=m-1; int i; while(end>=beg&&l<=r) { for(int i=l;i<=r;i++) sum.push_back(matrix[beg][i]); for(int i=beg+1;i<=end;i++) { sum.push_back(matrix[i][r]); } for(int i=r-1;i>=l;i--) { if(end==beg)break; sum.push_back(matrix[end][i]); } for(int i=end-1;i>=beg+1;i--) { if(l==r)break; sum.push_back(matrix[i][l]); } beg++; end--; l++; r--; } return sum; } };