LC417.太平洋大西洋水流问题
题意:枚举每一个点,看看是否能够从该点开始走,既能走到大西洋又能走到太平洋。
解题思路:这道题适合用宽搜来做,枚举每一个点,然后宽搜他周围的点,只能搜高度比他小的,如果其中有两条路,一条路能到达大西洋:x==n-1||y==m-1,另一条能到达太平洋:x==0||y==0,则说明该点是一个可行解。
代码及注释如下:
typedef pair<int,int> pii;class Solution {public:int n,m;vector<vector<int>> ans;//返回结果集vector<vector<int>> lop;//lop=heghtsbool st[205][205];//定义一个布尔数组用来记录走过的点,保证从起点开始,每个能走的点只走一次int dx[4]={0,-1,0,1},dy[4]={1,0,-1,0};//x,y偏移量void dfs(int x,int y){memset(st,0,sizeof st);//对于每一个点都初始化一次st数组queue<pii> p;//因为是二维的所以用pairint f=0,s=0;//f代表能否流入太平洋,s代表能否流入大西洋。p.push({x,y});//以起点开始宽搜st[x][y]=true;//起点先标记为truewhile(p.size()){auto t=p.front();p.pop();int z=t.first,x=t.second;//z代表x轴坐标,x代表y轴坐标if(s&&f) break;//如果既能流入大西洋也能流入太平洋就终止循环if(z==0||x==0) f=1;//下面两条语句就是上面所说的判断能否流入大西洋和太平洋if(z==n-1||x==m-1) s=1;for(int i=0;i<4;++i){//利用偏移量对该点的上下左右四个点就行搜索int a=z+dx[i],b=x+dy[i];if(a>=0&&a<n&&b>=0&&b<m&&lop[z][x]>=lop[a][b]){//得在边界内且高度符合要求if(!st[a][b]){//如果该点符合要求且没有被搜过就入队p.push({a,b});st[a][b]=true;}}}}//cout<<f<<" "<<s<<endl;if(f&&s) ans.push_back({x,y});//如果f=1=1&&s==1就push进数组}vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {lop=heights;int n=heights.size(),m=heights[0].size();this->n=n;this->m=m;for(int i=0;i<n;++i){for(int j=0;j<m;++j)dfs(i,j);}return ans;}};
LC417.太平洋大西洋水流问题相关推荐
- LC-417. 太平洋大西洋水流问题(多源BFS、DFS)
417. 太平洋大西洋水流问题 难度中等558 有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋&quo ...
- 利用DFS解决太平洋大西洋水流问题
二十五.太平洋大西洋水流问题 25.1.题设要求 有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋& ...
- Java实现 LeetCode 417 太平洋大西洋水流问题
417. 太平洋大西洋水流问题 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的 ...
- 力扣417题太平洋大西洋水流问题
力扣417题太平洋大西洋水流问题 题目描述:有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋" ...
- LeetCode 417.太平洋大西洋水流问题
LeetCode 417.太平洋大西洋水流问题 有一个 m × n 的长方形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋&qu ...
- Leetcode 417 题 太平洋大西洋水流问题
题目描述 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的右边界和下边界. 规定 ...
- 417. 太平洋大西洋水流问题(DFS)
417. 太平洋大西洋水流问题 题目 解题思路 代码 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而" ...
- 417. 太平洋大西洋水流问题(medium) -力扣(leetCode)逆流而上,JS图的深度优先遍历算法
⚡️417. 太平洋大西洋水流问题⚡️ 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处 ...
- 力扣417 太平洋大西洋水流问题
417. 太平洋大西洋水流问题 - 力扣(LeetCode) 核心: 建立两个和给定矩阵宽高一致的矩阵,分别表示太平洋和大西洋 从边界出发,深度优先遍历矩阵,继续递归前进行条件的限制:结点没有超出界限 ...
最新文章
- CentOS系统安装(上):图形/文本界面安装
- c# 字典按ascii 排序_sort命令-将文件进行排序并输出
- Extjs 之 initComponent 和 constructor的区别(转)
- 电脑中linux系统在哪里设置密码,linux添加一个root级别账户并设置密码linux操作系统 -电脑资料...
- render注册一个链接组件_vue 动态加载并注册组件、 且通过 render动态创建该组件...
- post请求体 ajax,ajax的post请求 @RequestBody解析问题
- 奇葩属性:layout_weight 的解释及使用
- 【知识图谱】Louvain、LPA等5类经典社区发现算法 Python 实战
- php 导出excel接口,PHP实现导出Excel文件
- 创建office一直转圈_Microsoft Office 2019 VL for Mac(office系列全套装)
- 东南大学硕士毕业论文Latex 模版教程
- 适合 C++ 新手学习的开源项目——在 GitHub 学编程
- jOOQ 3.13.2 代码生成过程及解决 daos 无法生成的问题
- Java中static、this、super、final用法
- 【excel】如何绘制斜线表头
- 基于STM32蓝牙无线手环脉搏心率计步器体温监测设计
- C++ 宽字符 窄字符 char wchar
- 桌面宠物 ① 通过python制作属于自己的桌面宠物
- 虚拟机linux关机halt,linux关机命令halt
- MATLAB散点密度图的画法三