func findDiagonalOrder(matrix [][]int) (ans []int) { m := len(matrix) if m == 0 { return } n := len(matrix[0]) if n == 0 { return } x, y := 0, 0 dx, dy := 1, -1 for i := 0; i < m*n; i++ { ans = append(ans, matrix[y][x]) if ny := y + dy; (ny == -1 || ny == m) && x != n-1 { dx, dy = -dx, -dy x++ } else if nx := x + dx; nx == -1 || nx == n { dx, dy = -dx, -dy y++ } else { x, y = nx, ny } } return }