• 剑指offer(19):顺时针打印矩阵


    题目描述

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
     
    class Solution {
    public:
        vector<int> printMatrix(vector<vector<int> > matrix) {
            vector<int> result;
            if(!matrix.size()) return result;
            int row = matrix.size();
            int column = matrix[0].size();
            double minElement = min(row, column);
            int times = ceil(minElement / 2.0);
            int rowStart = 0;
            int rowEnd = row-1;
            int columnStart = 0;
            int columnEnd = column-1;
            int columnIndex = columnStart;
            int rowIndex = rowStart;
            for(int i=0;i<times;i++){
                columnIndex = columnStart;
                rowIndex = rowStart;
                while(columnIndex<=columnEnd){
                    result.push_back(matrix[rowIndex][columnIndex]);
                    columnIndex++;
                }
                if(rowStart == rowEnd) return result;
                columnIndex--;
                rowIndex++;
                while(rowIndex<=rowEnd){
                    result.push_back(matrix[rowIndex][columnIndex]);
                    rowIndex++;
                }
                if(columnStart == columnEnd) return result;
                columnIndex--;
                rowIndex--;
                while(columnIndex>=columnStart){
                    result.push_back(matrix[rowIndex][columnIndex]);
                    columnIndex--;
                }
                if(rowStart+1 == rowEnd) return result;
                columnIndex++;
                rowIndex--;
                while(rowIndex>rowStart){
                    result.push_back(matrix[rowIndex][columnIndex]);
                    rowIndex--;
                }
                columnStart++;
                columnEnd--;
                rowStart++;
                rowEnd--;
            }
            return result;
        }
    };

  • 相关阅读:
    牛客网 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-低年级组)求最大值
    HDU 5024 Wang Xifeng's Little Plot(DFS)
    java正则表达式
    48.自用qss
    47.使用帧缓存对象生成叠加
    46.Qt 使用OpenGL绘制立方体
    45.Qt openGL实现三维绘图
    44.Qt通过子类化qstyle实现自定义外观
    43.qt通过qss自定义外观
    42.写入XML
  • 原文地址:https://www.cnblogs.com/ttzz/p/13561987.html
Copyright © 2020-2023  润新知