Python very concise solution using dfs + set (128ms).
python\ndef pacificAtlantic(self, matrix: List[List[int]]) -> List[List[int]]:\n    if not matrix:\n        return []\n    p_land = set()\n    a_land = set()\n 
```python\ndef pacificAtlantic(self, matrix: List[List[int]]) -> List[List[int]]:\n    if not matrix:\n        return []\n    p_land = set()\n    a_land = set()\n    R, C = len(matrix), len(matrix[0])\n    def spread(i, j, land):\n        land.add((i, j))\n        for x, y in ((i+1, j), (i, j+1), (i-1, j), (i, j-1)):\n            if (0<=x<R and 0<=y<C and matrix[x][y] >= matrix[i][j]\n                    and (x, y) not in land):\n                spread(x, y, land)\n                \n    for i in range(R):\n        spread(i, 0, p_land)\n        spread(i, C-1, a_land)\n    for j in range(C):\n        spread(0, j, p_land)\n        spread(R-1, j, a_land)\n    return list(p_land & a_land)\n```
['Depth-First Search', 'Ordered Set', 'Python3']