美文网首页
JSOF19--顺时针打印矩阵

JSOF19--顺时针打印矩阵

作者: 小北觅 | 来源:发表于2019-04-27 07:29 被阅读0次

    题目描述:
    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.

    思路:
    使用left,right,top,bottom四个变量记录当前的上下左右的边界。然后根据当前状态从左到右,从上到下(非必须),从右到左(非必须),从下到上(非必须)打印即可。

    代码

    class Solution {
    public:
        vector<int> printMatrix(vector<vector<int> > matrix) {
            int rows = matrix.size();            //行数
            int cols = matrix[0].size();        //列数
            vector<int> result;
            
            if(rows == 0 && cols == 0){
                return result;
            }
            int left = 0, right = cols - 1, top = 0, bottom = rows - 1;
            
            while(left <= right && top <= bottom){
                //从左到右
                for(int i = left; i <= right; ++i){
                    result.push_back(matrix[top][i]);
                }
                //从上到下
                for(int i = top + 1; i <= bottom; ++i){
                    result.push_back(matrix[i][right]);
                }
                //从右到左
                if(top != bottom){
                    for(int i = right - 1; i >= left; --i){
                        result.push_back(matrix[bottom][i]);
                    }
                }
                //从下到上
                if(left != right){
                    for(int i = bottom - 1; i > top; --i){
                        result.push_back(matrix[i][left]);
                    }
                }
                left++, top++, right--, bottom--;
            }
            return result;
        }
    };
    

    相关文章

      网友评论

          本文标题:JSOF19--顺时针打印矩阵

          本文链接:https://www.haomeiwen.com/subject/tsmjiqtx.html