给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。
示例:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,4,7,5,3,6,8,9]
解释:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/diagonal-traverse
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
对角线的特征
我们首先先忽略对角线的方向,观察对角线的数量。
注意到
关注第一行,发现第一行的每一项正好对应一条对角线。
关注最后一列,发现最后一列的每一项正好对应一条对角线。
前两者重复的即只有包含右上顶点的那一条,而除了那一条加起来就是全部的对角线。
所以对角线的总数为 行数 + 列数 - 1
观察对角线的方向,注意到对角线向右上或者向左下是交替进行的。
所以可以通过对对角线排序,通过序号判断向上或者向下。
我们设行数为M,列数为N,令最左上角的为第0条对角线,最右下的为第M+N-2条对角线。则当对角线的序号为偶数时,对角线是向右上的。称对角线为curve_line。
数据行列的特征
在一条对角线上,行和列的序号加起来是恒定的,因为如果行+1了则列必定-1。。
如果