剑指offer--20.顺时针打印数组

来源:互联网 发布:java web 测试工具 编辑:程序博客网 时间:2024/06/06 02:20

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
这里写图片描述

class Solution {public:    vector<int> printMatrix(vector<vector<int> > matrix) {        int rows=matrix.size();        int cols=matrix[0].size();        vector<int> res;        //if(rows==0||cols==0)        //  return res;        int count=rows*cols;        int flag=0;        int start=0;        int endX=cols-1;        int endY=rows-1;        //循环退出的条件        while(cols>start*2&&rows>start*2)        {            //step1            for(int i=start;i<=endX;++i)                res.push_back(matrix[start][i]);            //step2;至少有两行            if(start<endY)            {                for(int i=start+1;i<=endY;++i)                    res.push_back(matrix[i][endX]);            }            //step3;至少两行两列            if(start<endY&&start<endX)            {                for(int i=endX-1;i>=start;--i)                    res.push_back(matrix[endY][i]);            }            //step4;至少三行两列            if(start<endY-1&&start<endX)            {                for(int i=endY-1;i>=start+1;--i)                    res.push_back(matrix[i][start]);            }            endX--;            endY--;            start++;        }        return res;    }};
0 0
原创粉丝点击