题目描述
给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
示例 1:
输入:mat = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,4,7,5,3,6,8,9]
示例 2:
输入:mat = [[1,2],[3,4]]
输出:[1,2,3,4]
提示:
m == mat.length
n == mat[i].length
1 <= m, n <= 104
1 <= m * n <= 104
-105 <= mat[i][j] <= 105
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/diagonal-traverse
方法一:
if
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& mat) {
int x=1,y=-1,i=0,j=0,m=mat.size(),n=mat[0].size();
vector<int> ans;
while(i>=0&&i<m&&j>=0&&j<n){
ans.emplace_back(mat[i][j]);
i=i+y;
j=j+x;
if(i<0&&j>=0&&j<n){
i++;
x=-1;
y=1;
}
if(j>=n){
i=i+2;
j--;
x=-1;
y=1;
}
if(j<0&&i>=0&&i<m){
j++;
x=1;
y=-1;
}
if(i>=m){
j=j+2;
i--;
x=1;
y=-1;
}
}
return ans;
}
};