498. Diagonal Traverse
对角线 matrix坐标
Last updated
Was this helpful?
对角线 matrix坐标
Last updated
Was this helpful?
Given an m x n
matrix mat
, return an array of all the elements of the array in a diagonal order.
Example 1:
Example 2:
Constraints:
m == mat.length
n == mat[i].length
1 <= m, n <= 10
4
1 <= m * n <= 10
4
-10
5
<= mat[i][j] <= 10
5
分析:
↘ 主对角线
i - j == k
k ∈ [-(n-1), m-1]
1329, N-Queens, matrix diagonal sort
✅ 是主对称轴(i==j)
↙ 反对角线
i + j == k
k ∈ [0, m+n-2]
498, 1424, N-Queens, TicTacToe
❌ 不是对称轴
主对角线中心线
i == j
k=0 (i-j=0)
Transpose, isSymmetric
✅ 经典
利用对角线原理 正向对角线 x-y = k 反向对角线 x+y = k
同理可以对对角线组操作,对角线总数 m+n-1
初始检查:首先检查输入矩阵是否为空。
初始化参数:设置矩阵的行数 n
和列数 m
,初始化结果列表 res
,起始位置 (row, col)
和初始方向 direction
(1 表示右上,-1 表示左下)。
遍历矩阵:使用 for
循环遍历矩阵的所有元素。
添加当前元素:将当前位置的元素 mat[row][col]
加入结果列表 res
。
计算下一个位置:根据当前方向计算下一个位置 (new_row, new_col)
。
边界检查:
如果下一个位置在矩阵范围内,更新当前位置。
如果超出范围,根据当前方向调整位置并改变方向。
返回结果:最终返回按对角线顺序遍历的结果列表 res
。