顺时针打印矩阵

1.课本简单很详细! 容器用起来和数组差不多

class Solution {
public:
    //这个是要根据容器返回值来判断的!!
    vector<int> printMatrix(vector<vector<int> > matrix) {
    //是二维的容器  允许下标
    //判断条件     
     vector<int> res;//一开始定义是空的  
     if(matrix.empty())  
      return  res;  //返回空容器即可
     int rows=matrix.size();  
     int colums=matrix[0].size(); 
 
     int start=0;   
    while ((2*start<rows)&&(2*start<colums)) //这个for循环是圈数  //现在这种情况传过来传过去的麻烦 放一起吧
     {
      int endx=colums-1-start; //每次的终止行号
      int endy=rows-1-start; //每次的终止列号   //弄成实际的有好处
         
      //一 打印从左向右  这个是必须的!
        for(int i=start;i<=endx;i++)
        {
         int number=matrix[start][i];  
         res.push_back(number);   
        }
      //二  打印从右向下   判断终止行号大于起止行号   
         
        if(start<endy)
       {
        for(int i=start+1;i<=endy;i++)//i代表列
        {
         int number=matrix[i][endx];  
         res.push_back(number);   
        }   
       }
         //三  打印从右向左   判断终止行号大于起止行号   终止列号大于起止列号 
        if(start<endy&&start<endx)
       {
        for(int i=endx-1;i>=start;--i)//i代表行
        {
         int number=matrix[endy][i];  
         res.push_back(number);   
        }   
       }
              
       //四 打印从下向上   判断终止行号大于起止行号   终止列号比起止列号至少大2  
        if(start<endx&& (endy-start>1))//至少大于等于2 
       {
        for(int i=endy-1;i>=start+1;--i)//i代表列  //不用打到头
        {
         int number=matrix[i][start];  
         res.push_back(number);   
        }   
       }  
 
         start++;   
     }
        
        return res;
  
    }
};

 

posted @ 2019-08-21 11:56  高颖1995  阅读(94)  评论(0编辑  收藏  举报