问题:
给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历。
样例:
样例 1:
输入: [[1]]
输出: [1]
样例 2:
输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10, 11, 12]
]
输出: [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12]
python:
class Solution:
"""
@param matrix: An array of integers
@return: An array of integers
"""
def printZMatrix(self, matrix):
# write your code here
if matrix == None:
return matrix
if len(matrix) == 1:
return matrix[0]
result = []
resultList = [[] for i in range(len(matrix) + len(matrix[0]) - 1)]
for i in range(len(matrix)):
for j in range(len(matrix[i])):
resultList[i+j].append(matrix[i][j])
for k in range(len(resultList)):
if k%2 == 0:
resultList[k].reverse()
for l in range(len(resultList[k])):
result.append(resultList[k][l])
return result
C++:
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
if(matrix.size() == 0 || matrix[0].size() == 0)
{
return vector<int> ();
}
if(matrix.size() == 1)
{
return matrix[0];
}
vector<int> result;
vector<vector<int>> resultVector(matrix.size() + matrix[0].size() - 1);
for(int i = 0; i < matrix.size(); i++)
{
for(int j = 0; j < matrix[i].size(); j++)
{
resultVector[i+j].push_back(matrix[i][j]);
}
}
for(int k = 0; k < resultVector.size(); k++)
{
if(k%2 == 0)
{
reverse(resultVector[k].begin(), resultVector[k].end());
}
for(int l = 0; l < resultVector[k].size(); l++)
{
result.push_back(resultVector[k][l]);
}
}
return result;
}
};