zoukankan      html  css  js  c++  java
  • 剑指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;
        }
    };

  • 相关阅读:
    C语言I博客作业03
    C语言I博客作业02
    macwingIDE python3.5 配置
    JAVA必会算法插入排序
    java匿名内部类的另一个用途
    JAVA必会算法选择排序
    Mac elasticsearch 5.2.2 单机双节点配置
    JAVA必会算法二分查找法
    AOP 事物连接,记忆连接数据库,连接池
    线程的意义与一些常见面试问题
  • 原文地址:https://www.cnblogs.com/ttzz/p/13561987.html
Copyright © 2011-2022 走看看