给你一个包含 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]
#ifndef C185_H
#define C185_H
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
/*
* @param matrix: An array of integers
* @return: An array of integers
*/
vector<int> printZMatrix(vector<vector<int>> matrix) {
// write your code here
int len = matrix.size();
vector<int> val;
if (len == 0)
return val;
if (len == 1)
return matrix[0];
int size = matrix[0].size();
int i = 0, j = 1;
bool tag = true;
while (i < len)
{
if (tag == true)
{
int p = i, q = 0;
while (p >= 0&&q<size)
{
val.push_back(matrix[p--][q++]);
}
}
else
{
int p = i, q = 0;
while (p > 0&&q<size-1)
{
p--;
q++;
}
while (q >= 0&&p<len)
{
val.push_back(matrix[p++][q--]);
}
}
++i;
tag = !tag;
}
while (j < size)
{
if (tag == true)
{
int p = len - 1, q = j;
while (q < size&&p>=0)
{
val.push_back(matrix[p--][q++]);
}
}
else
{
int p = len - 1, q = j;
while (q < size-1)
{
p--;
q++;
}
while (p < len)
{
val.push_back(matrix[p++][q--]);
}
}
++j;
tag = !tag;
}
return val;
}
};
#endif