417.pacific-atlantic-water-flow.go 630 B

12345678910111213141516171819202122232425262728293031
  1. var dx []int = []int{1, 0, -1, 0}
  2. var dy []int = []int{0, -1, 0, 1}
  3. func pacificAtlantic(matrix [][]int) (res [][]int) {
  4. m, n := len(matrix), len(matrix[0])
  5. ocean := make([][]int, m)
  6. for i := 0; i < m; i++ {
  7. ocean[i] = make([]int, n)
  8. }
  9. for i := 0; i < m; i++ { // b10: pacific, b01: atlantic
  10. ocean[i][0] |= 2
  11. ocean[i][n-1] |= 1
  12. }
  13. for i := 0; i < n; i++ {
  14. ocean[0][i] |= 2
  15. ocean[m-1][i] |= 1
  16. }
  17. dfs(matrix, 0, 0, ocean)
  18. for i := 0; i < m; i++ {
  19. for j := 0; j < m; j++ {
  20. if ocean[i][j] == 3 {
  21. res = append(res, []int{j, i})
  22. }
  23. }
  24. }
  25. return
  26. }
  27. func dfs(matrix [][]int, x, y int, ocean [][]int) {
  28. }