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

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

规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。

请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。

提示:

输出坐标的顺序不重要
m 和 n 都小于150

示例:

给定下面的 5x5 矩阵:

  太平洋 ~   ~   ~   ~   ~ ~  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]] (上图中带括号的单元).

class Solution {private int row, col;private int[][] grid;private List<List<Integer>> result = new ArrayList<>();public List<List<Integer>> pacificAtlantic(int[][] matrix) {row = matrix.length;if (row == 0) {return result;}col = matrix[0].length;grid = new int[row][col];for (int i = 0; i < row; i++) {helper(matrix, i, 0, 1);}for (int j = 0; j < col; j++) {helper(matrix, 0, j, 1);}for (int i = 0; i < row; i++) {helper(matrix, i, col - 1, 2);}for (int j = 0; j < col; j++) {helper(matrix, row - 1, j, 2);}return result;}private void helper(int[][] matrix, int i, int j, int v) {if (grid[i][j] == v || grid[i][j] == 3) {return;}grid[i][j] += v;if (grid[i][j] == 3) {List<Integer> temp = new ArrayList<>();temp.add(i);temp.add(j);result.add(temp);}if (i != 0 && matrix[i - 1][j] >= matrix[i][j]) {helper(matrix, i - 1, j, v);}if (j != 0 && matrix[i][j - 1] >= matrix[i][j]) {helper(matrix, i, j - 1, v);}if (i != row - 1 && matrix[i + 1][j] >= matrix[i][j]) {helper(matrix, i + 1, j, v);}if (j != col - 1 && matrix[i][j + 1] >= matrix[i][j]) {helper(matrix, i, j + 1, v);}}}

Java实现 LeetCode 417 太平洋大西洋水流问题相关推荐

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

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

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

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

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

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

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

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

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

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

  6. LeetCode 417. 太平洋大西洋水流问题【dfs】

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

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

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

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

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

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

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

最新文章

  1. Windows下获取视频设备的一种改进实现
  2. bootstrap框架下 单选按钮组的选中以及取值问题
  3. 线性代数 第二章 矩阵及其运算
  4. Android 使用SWIG生成Jni代码
  5. [Vue 牛刀小试]:第八章 - 组件的基础知识
  6. SQL Server:统计数据库中每张表的大小
  7. C++ 高级数据类型(一)—— 数组
  8. IBM AIX 5.3 系统管理 -- 系统启动过程详解
  9. selectprovider 分页_MyBatis使用@SelectProvider拼接sql语句
  10. c语言 文件游程统计,游程 码表 如何形成
  11. 【独家】孙茂松:从机器翻译到古诗生成
  12. 【C语言】用指针描述数组,实现冒泡法排序
  13. python中的turtle如何运行_python中turtle库的简单使用教程
  14. ipa在线下载安装(itms-services)
  15. u盘linux反应好慢,识别U盘很缓慢怎么办的八种解决方法
  16. 惠普P1100 series “打印机安装失败,未安装打印机”问题解决方法
  17. 头像制作抖音微信壁纸小程序搭建一个基于uniCloud阿里OSS对象存储的免费图床源码
  18. Prim的故事(一文搞懂Prim算法)
  19. 抖音音乐怎么下载 mp3格式转换器如何使用
  20. 【腾讯云 Finops Crane 集训营】Finops Crane-英雄之剑

热门文章

  1. 淘宝店铺宝贝批量复制工具
  2. Computational Intelligence Assisted Design -- In Industrial Revolution 4.0 (计算智能在工业4.0的应用) --绪论
  3. 88---Python 以符号的方式给出积分表达式,类似Mathematics
  4. O(nlogn) 求LIS(Longest Increasing Subsequence)方法的总结
  5. java基础知识之加强
  6. 计算机网络_实验16_网络故障导致环路
  7. GROMACS运行参数之em.mdp文件详解
  8. ipset如何与netfilter内核模块进行通信
  9. 用R语言理解洛必达法则
  10. DynamicModuleException: MENIFEST.MF文件未找到