| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | var dx []int = []int{1, 0, -1, 0}var dy []int = []int{0, -1, 0, 1}func pacificAtlantic(matrix [][]int) (res [][]int) {	m := len(matrix)	if m == 0 {		return	}	n := len(matrix[0])	if n == 0 {		return	}	ocean := make([][]int, m)	for i := 0; i < m; i++ {		ocean[i] = make([]int, n)	}	for i := 0; i < m; i++ { // b10: pacific, b01: atlantic		dfs(matrix, 2, 0, i, ocean, m, n)		dfs(matrix, 1, n-1, i, ocean, m, n)	}	for i := 0; i < n; i++ {		dfs(matrix, 2, i, 0, ocean, m, n)		dfs(matrix, 1, i, m-1, ocean, m, n)	}	for i := 0; i < m; i++ {		for j := 0; j < n; j++ {			if ocean[i][j] == 3 {				res = append(res, []int{i, j})			}		}	}	return}func dfs(matrix [][]int, mask, x, y int, ocean [][]int, m, n int) {	ocean[y][x] |= mask	for i := 0; i < 4; i++ {		nx, ny := x+dx[i], y+dy[i]		if 0 <= nx && nx < n && 0 <= ny && ny < m && ocean[ny][nx]&mask == 0 && matrix[y][x] <= matrix[ny][nx] {			dfs(matrix, mask, nx, ny, ocean, m, n)		}	}}
 |