给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
使用了笨方法,每次都是从右上到左下,奇数次反着加入数组。
class Solution:
def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:
m = len(mat)
n = len(mat[0])
# 1 2 3
# 4 5 6
# 7 8 9
arr = []
for i in range(n):
x = 0
y = i
temp = []
while y > -1 and x < m:
# print('x, y:', x, y)
# print('mat', mat[x][y])
temp.append(mat[x][y])
x += 1
y -= 1
if i % 2 != 0:
for v in temp:
arr.append(v)
else:
for v in temp[::-1]:
arr.append(v)
for i in range(1, m):
x = i
y = n-1
temp = []
while y > -1 and x < m:
# print('x, y:', x, y)
# print('mat', mat[x][y])
temp.append(mat[x][y])
x += 1
y -= 1
if (n+i) % 2 == 0:
for v in temp:
arr.append(v)
else:
for v in temp[::-1]:
arr.append(v)
return arr