LeetCode练习
# 描述
给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
# 示例
1
2
3
4
5
6
7
8
9
1
2
3
4
5
如图:
- 输入:
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
1
2
3
4
5
2
3
4
5
- 输出
[1, 2, 4, 7, 5, 3, 6, 8, 9]
1
# 思路
- 设
n = mat.length,m = mat[0].length - 用
d记录当前方向,d = 1代表当前方向为左下 => 右上 - 用
d记录当前方向,d = 0代表当前方向为右上 => 左下 - 左下至右上每移动一次,
i - 1,j + 1 - 右上至左下每移动一次,
i + 1,j - 1 - 当左下 => 右上遇到边界情况如下:
i = 0时,此时抵达上边界,且j + 1 < m时(确保横向移动不会超出范围),横向移动一格,并调转方向(更改d的值)j = m - 1时,此时抵达右边界,且i + 1 < n时(确保纵向移动不会超出范围),纵向移动一格,并调转方向
- 右上 => 左下的分析与上面一致,只是边界变成了左边界与下边界