LeetCode 417. 太平洋大西洋水流问题 JAVA dfs
给定一个 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]] (上图中带括号的单元).来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pacific-atlantic-water-flow
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
1、利用深度搜索算法,注意要先判断边界条件及该点是否已经查看,避免死循环
2、从边界往四周搜索,即如果周围的水流比边界水流高,那么该点可以到达边界。
3、利用两个boolean类型数组分别代表太平洋和大西洋,搜索那些点可以分别达到大西洋和太平洋
4、最终取两个数组并集即答案
class Solution {boolean Atlantic[][];boolean Pacific[][];public List<List<Integer>> pacificAtlantic(int[][] matrix) {List<List<Integer>> res=new ArrayList<>();int row=matrix.length;if(row==0) return res;int col=matrix[0].length;Atlantic=new boolean[row][col]; Pacific=new boolean[row][col];for(int i=0;i<row;i++){dfs(matrix, Atlantic,i,col-1);dfs(matrix,Pacific,i,0);} for(int i=0;i<col;i++){dfs(matrix,Atlantic,row-1,i);dfs(matrix,Pacific,0,i);}for(int i=0;i<matrix.length;i++){for(int j=0;j<matrix[i].length;j++){if(Atlantic[i][j]&&Pacific[i][j]){ List<Integer> tmp=new ArrayList<Integer>();tmp.add(i);tmp.add(j);res.add(tmp);}}}return res;}public void dfs(int matrix[][],boolean visit[][],int row,int col){if(row<0||row>=matrix.length||col<0||col>=matrix[row].length||visit[row][col])return;visit[row][col]=true;if(row-1>=0&&matrix[row][col]<=matrix[row-1][col])dfs(matrix,visit,row-1,col);if(row+1<matrix.length&&matrix[row][col]<=matrix[row+1][col])dfs(matrix,visit,row+1,col);if(col-1>=0&&matrix[row][col]<=matrix[row][col-1])dfs(matrix,visit,row,col-1);if(col+1<matrix[row].length&&matrix[row][col]<=matrix[row][col+1])dfs(matrix,visit,row,col+1);}
}
LeetCode 417. 太平洋大西洋水流问题 JAVA dfs相关推荐
- LeetCode 417. 太平洋大西洋水流问题【dfs】
题目描述 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的右边界和下边界. 规定 ...
- LeetCode 417.太平洋大西洋水流问题
LeetCode 417.太平洋大西洋水流问题 有一个 m × n 的长方形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋&qu ...
- Java实现 LeetCode 417 太平洋大西洋水流问题
417. 太平洋大西洋水流问题 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的 ...
- 417. 太平洋大西洋水流问题(DFS)
417. 太平洋大西洋水流问题 题目 解题思路 代码 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而" ...
- LeetCode 417. 太平洋大西洋水流问题--BFS
太平洋大西洋水流问题 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的右边界和下 ...
- LeetCode 417. 太平洋大西洋水流问题(BFS/DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 广度优先搜索 2.2 DFS 深度优先搜索 1. 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度. "太平洋&q ...
- leetcode 417. Pacific Atlantic Water Flow | 417. 太平洋大西洋水流问题(DFS,经典“感染”思路)
题目 https://leetcode.com/problems/pacific-atlantic-water-flow/ 题解 一开始的错误思路:(区分"主动"与"被动 ...
- LeetCode 417 太平洋大西洋水流问题
题目描述 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左 边界和上边界,而"大西洋"处于大陆的右边界和下边界.规定 ...
- 417. 太平洋大西洋水流问题(medium) -力扣(leetCode)逆流而上,JS图的深度优先遍历算法
⚡️417. 太平洋大西洋水流问题⚡️ 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处 ...
最新文章
- 我做 Fiori 开发经常使用的几个系统,不同的 SAP UI5 版本
- 更高效地刷OJ——String常用方法(一)
- 常用的系统架构 web服务器之iis,apache,tomcat三者之间的比较
- 思科修复NSA报告的Nexus 交换机DoS漏洞及其它
- SUSE12SP3-Mycat(2)Schema.xml配置详解
- SCCM 2012系列14 操作系统播发③
- Eclipse下载安装配置
- Idear集成maven环境
- CAD制图神器-CAD专用键盘
- php的mssql_connect+端口连接不了的问题
- hbase应用场景 java_Hbase Java API 使用
- Windows无法格式化改卷,改卷已脱机, 请尝试首先向改卷分配驱动器号或路径使其联机
- 如何成为数据分析师系列(二):可视化图表进阶
- 部署Kubernetes(k8s)时,为什么要关闭swap、selinux、firewall 防火墙?
- 提示计算机类型不匹配啥意思,提示:运行时错误“13”:类型不匹配。是什么意思刚装好...
- 串口服务器调试助手使用教程,comassistant串口调试助手使用说明.pdf
- RatingBar(星级评分条)
- 怎么在matlab 中制表符,matlab中用fprintf怎么写入空格 、制表符,回车换行等符号?...
- 使用霍金团队选择的服务器是一种什么感受
- ThinkJS 作者李成银:择善而从之,笃行致远