zoukankan      html  css  js  c++  java
  • 剑指offer——29顺时针打印矩阵

    题目描述

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
     
    题解:
      初始化一个左上角和一个右下角即可,然后顺时针打印,注意当只有一行和只有一列的时候
      
     1 class Solution {
     2 public:
     3     vector<int> printMatrix(vector<vector<int> > matrix) {
     4         int Lx = 0, Ly = 0, Rx = matrix.size() - 1, Ry = matrix[0].size() - 1;
     5         vector<int>res;
     6         while (Lx <= Rx && Ly <= Ry)
     7         {
     8             if (Lx == Rx)//只有一行
     9                 for (int i = Ly; i <= Ry; ++i)
    10                     res.push_back(matrix[Lx][i]);
    11             else if(Ly==Ry)//只有一列
    12                 for (int i = Lx; i <= Rx; ++i)
    13                     res.push_back(matrix[i][Ly]);
    14             else
    15             {
    16                 for (int i = Ly; i < Ry; ++i)
    17                     res.push_back(matrix[Lx][i]);
    18                 for (int i = Lx; i < Rx; ++i)
    19                     res.push_back(matrix[i][Ry]);
    20                 for (int i = Ry; i > Ly; --i)
    21                     res.push_back(matrix[Rx][i]);
    22                 for (int i = Rx; i > Lx; --i)
    23                     res.push_back(matrix[i][Ly]);
    24             }
    25             ++Lx, ++Ly;
    26             --Rx, --Ry;
    27         }
    28         return res;
    29     }
    30 };
  • 相关阅读:
    撒谎
    可怜的猪
    GIS学习笔记(五)
    国产木马冰河2.2
    矛盾
    GIS学习笔记(六)
    男人如衣服
    VS2005快捷键大全
    慧悟
    DOS命令
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11674319.html
Copyright © 2011-2022 走看看