#

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

#

# @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[0else 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 rangemax(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