#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param mat int整型二维数组
# @return int整型一维数组
#
class Solution:
def diagonalOrder(self , mat: List[List[int]]) -> List[int]:
# write code here
lst = []
if not mat:
return lst
flag = 0 # 0:up 1 :down
row = len(mat)
col = len(mat[0]) if mat and mat[0] else 0
lev = 1
# # n行m列的矩阵对角线遍历的行数为(n+m-1)行;
# # 每一行的元素:行下标+列下标=行号,即(i+j==行号);
lev_all = row+ col -1
for lev in range(1, lev_all+1):
#遍历每一层对角线
flag = (lev+1)%2 # 0:up 1 :down
if lev-1<= row-1:
startRow = (lev-1)
startCol = 0
else:
startRow = row-1
startCol = lev - row
tmp = []
for _ in range( max(row,col) +1 ):
tmp+= [ mat[startRow][startCol] ]
startRow -=1
startCol +=1
if startRow<0 or startCol>col-1:
break
if tmp:
print("lev:{} {}".format(lev, tmp))
if flag==1: #down
tmp.reverse()
lst += tmp
print(lst)
return lst