<p>Given an <code>m x n</code> matrix <code>mat</code>, return <em>an array of all the elements of the array in a diagonal order</em>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2021/04/10/diag1-grid.jpg" style="width: 334px; height: 334px;" />
<pre>
<strong>Input:</strong> mat = [[1,2,3],[4,5,6],[7,8,9]]
<strong>Output:</strong> [1,2,4,7,5,3,6,8,9]
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> mat = [[1,2],[3,4]]
<strong>Output:</strong> [1,2,3,4]
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>m == mat.length</code></li>
	<li><code>n == mat[i].length</code></li>
	<li><code>1 &lt;= m, n &lt;= 10<sup>4</sup></code></li>
	<li><code>1 &lt;= m * n &lt;= 10<sup>4</sup></code></li>
	<li><code>-10<sup>5</sup> &lt;= mat[i][j] &lt;= 10<sup>5</sup></code></li>
</ul>

class Solution:
    def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:
        res = [0]*(len(mat) * len(mat[0]))
        length = len(mat[0])
        height = len(mat)
        if length == 1:
            return [num[0] for num in mat]
        elif height == 1:
            return mat[0]
        reverse = True
        z = 0
        #up
        for x in range(length):
            temp = []
            j = x
            print(j)
            for y in range(min(j+1,height)):
                print("[" + str(y) + ", " + str(j) + "]")
                temp.append(mat[y][j])
                j -= 1
            if reverse:
                temp = reversed(temp)
                reverse = False
            else:
                reverse =  True
            for elem in temp:
                res[z] = elem
                z += 1


        #down
        for y in range(1, height):
            temp = []
            j = length - 1
            print(j)
            i = y
            while j > -1 and i < height:
                print("[" + str(i) + ", " + str(j) + "]")
                temp.append(mat[i][j])
                i += 1
                j -= 1
            if reverse:
                temp = reversed(temp)
                reverse = False
            else:
                reverse =  True
            for elem in temp:
                res[z] = elem
                z += 1
        return res
                
        
            
19700