https://leetcode.cn/problems/diagonal-traverse/description/
给你一个大小为
m x n的矩阵mat,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。示例 1:
1
2 输入:mat = [[1,2,3],[4,5,6],[7,8,9]]
>输出:[1,2,4,7,5,3,6,8,9]示例 2:
1
2 >输入:mat = [[1,2],[3,4]]
输出:[1,2,3,4]提示:
m == mat.lengthn == mat[i].length1 <= m, n <= 1041 <= m * n <= 104-105 <= mat[i][j] <= 105
类似此类二维数组,最重要的就是要寻找到他们之间的规律。
当我们将所有坐标标出时可以发现,每一次斜向遍历时横纵坐标之和保持不变,且下一次遍历横纵之和必然比此次多 1 。我们可以按遍历方向将过程分为两类:
- 当和为偶数时,由左下到右上遍历,过程中横坐标增加纵坐标减少
- 当和为奇数时,由右上到左下遍历,过程中纵坐标增加横坐标减少
1 | class Solution { |
