题目描述:
给你一个大小为
m x n
的矩阵mat
,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。示例:
输入: mat = [[1,2,3],[4,5,6],[7,8,9]]
输出: [1,2,4,7,5,3,6,8,9]
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
vector<int> findDiagonalOrder(vector<vector<int>>& matrix) {
vector<int> res;
if(matrix.empty())
return res;
int row = matrix.size(), col = matrix[0].size(), c = 0, r = 0;
for(int i=0;i < row+col-1;i++)
{
if(i % 2)
{
c = (i<col) ? i : col-1;
r = i - c;
while(c >= 0 && r < row)
res.push_back(matrix[r++][c--]);
}
else
{
r = (i<row) ? i : row-1;
c = i - r;
while(c < col && r >= 0)
res.push_back(matrix[r--][c++]);
}
}
return res;
}
};
int main()
{
vector<vector<int>> arr = { {5, 0, 9,11},{2, 4, 8,10},{13, 3, 6, 7},{15,14,12,16} };
Solution solution;
vector<int> result = solution.findDiagonalOrder(arr);
for(int i=0; i<result.size(); i++){
cout << result[i] << ' ';
}
return 0;
}