顺时针打印矩阵
顺时针打印矩阵
https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tqId=11172&tPage=1&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking
class Solution { public: vector<int> printMatrix(vector<vector<int> > matrix) { int rowend=matrix.size()-1; int colend=0; int rowstart=0; int colstart=0; vector<int> vec; if(rowend>=0) colend=matrix[0].size()-1; while(colend>=colstart&&rowend>=rowstart) { for(int j=colstart;j<=colend;j++) { vec.push_back(matrix[rowstart][j]); } for(int i=rowstart+1;i<=rowend;i++) vec.push_back(matrix[i][colend]); if(rowend>rowstart) //如果不止一行,则需要反向打印 for(int j=colend-1;j>=colstart;j--) vec.push_back(matrix[rowend][j]); if(colend>colstart) //如果不止一列,需要反向打印 for(int i=rowend-1;i>rowstart;i--) vec.push_back(matrix[i][colstart]); rowstart++; colstart++; rowend--; colend--; } return vec; } };
用四个方向标标出开始的行,开始的列,结束的行,结束的列
主要循环中遗漏了单行,单列情况,如果是单行或者单列,则不需要反向打印了