🌊 太平洋大西洋水流问题详解:DFS 反向遍历的经典应用
🧩 题目描述
在一个 m × n
的二维矩阵 heights
中,每个单元格代表地形的海拔高度。矩阵的左边界和上边界与 太平洋 相邻,右边界和下边界与 大西洋 相邻。
雨水从任意格子开始,可以向 北、南、东、西 四个方向流动,但只能流向高度小于或等于当前格子的方向。也就是说,水只能“流下去”或“流平”。
你需要找出所有能同时流向 太平洋和大西洋 的格子坐标,并以二维数组的形式返回这些坐标。
🧠 解题思路分析
❓ 如何判断水能否从一个格子同时流向两个大洋?
如果我们从每个格子开始,尝试向两个大洋流动,会带来巨大的计算量,而且容易陷入重复搜索。
✅ 反向思维是关键!
我们不从每个格子“流出去”,而是从两个大洋“倒流回来”!
也就是说:
- 从太平洋边界(左边、上边)出发,沿着高度递增的方向,标记能“反向流到”的所有格子。
- 同