func findDiagonalOrder(mat [][]int) []int {
n, m := len(mat), len(mat[0])
ans := make([]int, 0)
for p := 0; p < m + n - 1; p ++{
if p % 2 == 0 {
x := min(p, n - 1)
y := max(p - n + 1, 0)
for x >= 0 && y < m {
ans = append(ans, mat[x][y])
x --
y ++
}
} else {
x := max(p - m + 1, 0)
y := min(p, m - 1)
for x < n && y >= 0 {
ans = append(ans, mat[x][y])
x ++
y --
}
}
}
return ans
}