【剑指offer系列】 顺时针打印矩阵___20

来源:互联网 发布:java异步请求数据 编辑:程序博客网 时间:2024/05/17 12:03

  题目描述:
  输入一个矩阵,按照从外到里的顺序顺时针打印每个值
  
  示例:
  这里写图片描述
  
  分析:
  对于每一圈,可能存在以下几种情况
  这里写图片描述
  这里写图片描述
  
  因此对每个方向的打印都要先进行条件判断,判断是否需要打印这个方向
  
  代码:    

void printCircle(vector<vector<int> >&nums,int m,int n,int start){    int endCol=n-start-1;    int endRow=m-start-1;    for(int i=start;i<=endCol;++i){        cout<<nums[start][i]<<"\t";    }    if(start<endRow){        for(int i=start+1;i<=endRow;++i){            cout<<nums[i][endCol]<<"\t";        }    }    if(start<endCol&&start<endRow){        for(int i=endCol-1;i>=start;--i){            cout<<nums[endRow][i]<<"\t";        }    }    if(start<endCol&&start<(endRow-1)){        for(int i=endRow-1;i>start;--i){            cout<<nums[i][start]<<"\t";        }    }    cout<<endl;}void printMatrix(vector<vector<int> >& nums){    int m=nums.size();    if(m==0)    return;    int n=nums[0].size();    for(int start=0;start*start<m&&start*start<n;++start){        printCircle(nums,m,n,start);    }}
0 0
原创粉丝点击