牛客题霸 转圈打印矩阵 C++题解/答案
题目描述
给定一个整型矩阵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;
四个变量,分别表示矩形的上下和左右,然后按照图中红色箭头的顺序一样存入vectorsum内即可
当(end = = beg)时,说明行的已经取完,就不用再取了
(l = = r)时也是一样
自己模拟模拟过程就能感受出来
代码:
class Solution {
public:/*** * @param matrix int整型vector<vector<>> the matrix* @return int整型vector*/vector<int> printMatrix(vector<vector<int> >& matrix) {// write code hereint n=matrix.size();//lieint m=matrix[0].size();//hangvector<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;}
};