498 对角线遍历
本文最后更新于:2022年4月9日 中午

给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。
示例:
输入:
1 |
|
输出: [1,2,4,7,5,3,6,8,9]
解释:
说明:
- 给定矩阵中的元素总数不会超过 100000 。
Solution
参考 @jimmy00745 的解题思路
- 对角线特征
- 对角线的总数为 = 行数 + 列数 - 1
- 对角线向右上或者向左下是交替进行的,当对角线的序号为偶数时,对角线是向右上的。
- 数据行列特征
- 在一条对角线上,行和列的序号加起来是恒定的,因为如果行 +1 了则列必定 -1。
- 确定行(或列)的起始与结束范围。
- 行的起始
- 在对角线小于等于列数的时候,观察到始终是从第 0 行开始。
- 超过了列数后,每超过一条,起始行数也要加一。即
curve_line + 1 - N
。
- 行的结束
- 从最后一行看,当对角线数大于等于行数时,观察到始终到第M行结束,即索引为 M-1。
- 当对角线小于行数时,观察到每少一条,结束行数也 -1。即
curve_line
。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!