12345678910111213141516171819202122232425 |
- 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
- }
|