zoukankan      html  css  js  c++  java
  • 185 矩阵的之字形遍历

    原题网址:http://www.lintcode.com/zh-cn/problem/matrix-zigzag-traversal/

    给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历。

    样例

    对于如下矩阵:

    [
      [1, 2,  3,  4],
      [5, 6,  7,  8],
      [9,10, 11, 12]
    ]
    

    返回 [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12]

     1 #include <iostream>
     2 #include <vector>
     3 #include <math.h>
     4 #include <string>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8  vector<int> printZMatrix(vector<vector<int>> &matrix)
     9  { 
    10      int row=matrix.size();
    11      int col=matrix[0].size();
    12      int total=row*col;
    13      vector<int> result;
    14      int i=0;
    15      int j=0;
    16      int count=0;
    17 
    18      result.push_back(matrix[i][j]);
    19      count++;
    20      
    21      bool up=true; 
    22 
    23      while(count<total)
    24      {
    25 
    26          if (up)
    27          {
    28              //向上走;
    29              if ((i-1)>=0&&(j+1)<col)
    30              {
    31                  result.push_back(matrix[i-1][j+1]);
    32                  count++;
    33                  i=i-1;
    34                  j=j+1;     
    35              }
    36              else 
    37              {        
    38                  if ((j+1)<col)
    39                  {
    40                      result.push_back(matrix[i][j+1]);
    41                      count++;
    42                      j=j+1;
    43                  }
    44                  else  //error:写成if((j+i)>=col),因为上一个if中j+1可能发生变化,应该用else直接分成两种情况;
    45                  {
    46                      result.push_back(matrix[i+1][j]);
    47                      count++;
    48                      i=i+1;
    49                  }
    50                  
    51                   up=false;
    52              }
    53          }
    54          else  //向下走;
    55          {
    56              
    57            if ((i+1)<row&&(j-1)>=0)
    58          {
    59              result.push_back(matrix[i+1][j-1]);
    60              count++;
    61              i=i+1;
    62              j=j-1;
    63             
    64          }
    65          else
    66          {
    67             
    68              if ((i+1)<row)
    69              {
    70                  result.push_back(matrix[i+1][j]);
    71                  count++;
    72                  i=i+1;
    73              }
    74              else
    75              {
    76                  result.push_back(matrix[i][j+1]);
    77                  count++;
    78                  j=j+1;
    79              }
    80              
    81               up=true;
    82          }
    83          }     
    84          
    85      }
    86      return result;
    87  }

    参考:

    https://blog.csdn.net/guoziqing506/article/details/51602261

  • 相关阅读:
    python安装mysqldb
    2月8日
    python反射机制
    python备忘
    Nginx+Tomcat动静分离及Nginx优化
    yum挂在iso文件yum源配置
    升级apache
    解决编译apache出现的问题:configure: error: APR not found . Please read the documentation
    学习网站总结
    面试题:登录页面测试
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/8633452.html
Copyright © 2011-2022 走看看