顺时针打印矩阵

顺时针打印矩阵

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;
    }
};

用四个方向标标出开始的行,开始的列,结束的行,结束的列
主要循环中遗漏了单行,单列情况,如果是单行或者单列,则不需要反向打印了

全部评论

相关推荐

投递腾讯等公司8个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务