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;
        }
    };

  • 相关阅读:
    需求获取过程中的逆向沟通
    程序员==生 涯 篇
    算法设计
    灯的启示:微软对唐骏的面试题
    使用Gzip压缩提升WEB服务器性能
    简历误区
    招聘编辑的七道面试题
    web2.0及其相关技术
    经典面试题助你成功就业
    逗号网站推广营销策略
  • 原文地址:https://www.cnblogs.com/ttzz/p/13561987.html
Copyright © 2011-2022 走看看