给你一个大小为 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 + n - 1条,从0开始遍历,并且每条对角线的横左边加纵坐标的和为当前遍历的值k
k为偶数时,代表从左下忘右上遍历,当k为奇数时,代表从右上往左下遍历
function findDiagonalOrder(mat) {
let m = mat.length;
let n = mat[0].length;
let res = [];
for (let k = 0; k < m + n - 1; k++) {
//右上方
if (k % 2 == 0) {
let row = Math.min(k, m - 1);
let col = k - row;
while (row >= 0 && col < n) {
res.push(mat[row][col]);
row--;
col++;
}
} else {
let col = Math.min(k, n - 1);
let row = k - col;
while (row < m && col >= 0) {
res.push(mat[row][col]);
row++;
col--;
}
}
}
return res;
}