题目

有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。

这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格 高于海平面的高度 。

岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋。

返回网格坐标 result 的 2D 列表 ,其中 result[i] = [ri, ci] 表示雨水从单元格 (ri, ci) 流动 既可流向太平洋也可流向大西洋 。

示例


输入: heights = [[1,2,2,3,5],[3,2,3,4,4],[2,4,5,3,1],[6,7,1,4,5],[5,1,1,2,4]]
输出: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]

输入: heights = [[2,1],[1,2]]
输出: [[0,0],[0,1],[1,0],[1,1]]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pacific-atlantic-water-flow
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1:DFS

⭐题解:https://leetcode-cn.com/problems/pacific-atlantic-water-flow/solution/shui-wang-gao-chu-liu-by-xiaohu9527-xxsx/

Java实现
class Solution {int m, n;int[] directions = new int[]{-1, 0, 1, 0, -1};int[][] heights;public List<List<Integer>> pacificAtlantic(int[][] heights) {this.heights = heights;m = heights.length;n = heights[0].length;boolean[][] visitedPo = new boolean[m][n];boolean[][] visitedAo = new boolean[m][n];for (int i = 0; i < m; i++) {track_back(i, 0, visitedPo);track_back(i, n - 1, visitedAo);}for (int j = 0; j < n; j++) {track_back(0, j, visitedPo);track_back(m - 1, j, visitedAo);}List<List<Integer>> res = new ArrayList<>();for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (visitedPo[i][j] && visitedAo[i][j]) {res.add(Arrays.asList(i, j));}}}return res;}public void track_back(int i, int j, boolean[][] visited) {if (visited[i][j]) return;visited[i][j] = true;for (int k = 0; k < directions.length - 1; k++) {int x = i + directions[k];int y = j + directions[k + 1];if (x < m && x >= 0 && y < n && y >= 0 && heights[x][y] >= heights[i][j]) {track_back(x, y, visited);}}}
}

力扣 417. 太平洋大西洋水流问题相关推荐

  1. 力扣417 太平洋大西洋水流问题

    417. 太平洋大西洋水流问题 - 力扣(LeetCode) 核心: 建立两个和给定矩阵宽高一致的矩阵,分别表示太平洋和大西洋 从边界出发,深度优先遍历矩阵,继续递归前进行条件的限制:结点没有超出界限 ...

  2. 417. 太平洋大西洋水流问题(medium) -力扣(leetCode)逆流而上,JS图的深度优先遍历算法

    ⚡️417. 太平洋大西洋水流问题⚡️ 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处 ...

  3. Java实现 LeetCode 417 太平洋大西洋水流问题

    417. 太平洋大西洋水流问题 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的 ...

  4. LeetCode 417.太平洋大西洋水流问题

    LeetCode 417.太平洋大西洋水流问题 有一个 m × n 的长方形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋&qu ...

  5. 417. 太平洋大西洋水流问题(DFS)

    417. 太平洋大西洋水流问题 题目 解题思路 代码 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而" ...

  6. LeetCode 417. 太平洋大西洋水流问题--BFS

    太平洋大西洋水流问题 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的右边界和下 ...

  7. LeetCode 417. 太平洋大西洋水流问题(BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 广度优先搜索 2.2 DFS 深度优先搜索 1. 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度. "太平洋&q ...

  8. LeetCode 417. 太平洋大西洋水流问题 JAVA dfs

    给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的右边界和下边界. 规定水流只能按 ...

  9. LeetCode 417 太平洋大西洋水流问题

    题目描述 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左 边界和上边界,而"大西洋"处于大陆的右边界和下边界.规定 ...

最新文章

  1. UIEdgeInsets 说明
  2. 汽车行业如何个性化定制转型?看APS系统在这家企业的运用
  3. python数据库连接类写其他类调用报超时_python面向对象,类,以及连接数据库
  4. CodeVS 1300 文字排版 线性DP
  5. 安装版mysql5.7_mysql5.7 安装版安装
  6. 魅族魅蓝max简单打开USB调试模式的经验
  7. scalar2color
  8. SqlServer Alwayson 搭建报错:19405
  9. Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
  10. 最好用的卸载软件工具(Your Uninstaller! PRO)
  11. 2000款学校教师课件培训PPT模板免费下载网址
  12. matlab 查看版本号,如何查看matlab版本信息?matlab版本信息怎么看
  13. 计算机工程系徽,教师队伍
  14. [IOI2018]-day1 简要题解
  15. Linux regulator框架理解及使用
  16. Unity中UI组件
  17. 一位高人隐士传授的炼精化气秘法 透彻之极!
  18. 前端开发:a标签的使用
  19. 面试某东测试岗:“如果开发的Bug比较多,你会如何处理?”
  20. jarvisoj-Crypto-superexpress

热门文章

  1. python3web开发教程_三、Python web开发入门
  2. keil uvision4 调试教程
  3. OSChina 周四乱弹 ——程序员要赚多少钱才能让妻子保持温柔和美丽
  4. cf869C The Intriguing Obsession
  5. 27.html的定位(position)和偏移量(offset)
  6. pritunl管理工具-路由转发配置
  7. Java异常学习小结
  8. [转载]Malcolm的新书:Outliers
  9. 软件发明专利实例_软件发明专利思路
  10. 西门子dcs系统组态手册下载_不懂PLC,SCADA,也能通俗易懂的了解DCS(分布式控制系统)...