leetcode 498 对角线遍历
z

给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。

示例:

输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]

输出: [1,2,4,7,5,3,6,8,9]

解释:

img


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution(object):
def findDiagonalOrder(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: List[int]
"""
if not matrix: return matrix
m, n = len(matrix), len(matrix[0])
dic = {}
for i in range(m):
for j in range(n):
if i+j not in dic:
dic[i+j] = []
dic[i+j].append(matrix[i][j])
ans = []
for i in range(m+n-1):
if i % 2:
ans.extend(dic[i])
else:
ans.extend(dic[i][::-1])
return ans