顺时针打印矩阵
顺时针打印矩阵
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;
}
};用四个方向标标出开始的行,开始的列,结束的行,结束的列
主要循环中遗漏了单行,单列情况,如果是单行或者单列,则不需要反向打印了
