LeetCode 417. 太平洋大西洋水流问题--BFS
- 太平洋大西洋水流问题
给定一个 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]] (上图中带括号的单元).
题解
分别从太平洋和大西洋反向遍历整个地图,如果一些位置被遍历两次,说明可以同时流入太平洋和大西洋。
AC代码
class Solution {public:struct Node{int x,y,val;};queue<Node>q;int xx[4]={0,0,-1,1};int yy[4]={-1,1,0,0};int vis[205][205];bool cis[205][205];void bfs(vector<vector<int>>& heights){memset(cis,0,sizeof(cis));while(!q.empty()){Node t=q.front();q.pop();for(int i=0;i<4;i++){Node w;w.x=t.x+xx[i];w.y=t.y+yy[i];if(w.x<1||w.x>heights.size()||w.y<1||w.y>heights[0].size())continue;if(cis[w.x][w.y])continue;if(heights[w.x-1][w.y-1]<t.val)continue;w.val=heights[w.x-1][w.y-1];cis[w.x][w.y]=true;vis[w.x][w.y]++;q.push(w);}}}vector<vector<int>>res;vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {memset(vis,0,sizeof(vis));//遍历太平洋while(!q.empty())q.pop();for(int i=1;i<=heights.size();i++){Node t;t.x=i,t.y=0,t.val=-1;q.push(t);}for(int i=1;i<=heights[0].size();i++){Node t;t.x=0,t.y=i,t.val=-1;q.push(t);}bfs(heights);//遍历大西洋while(!q.empty())q.pop();for(int i=1;i<=heights.size();i++){Node t;t.x=i,t.y=heights[0].size()+1,t.val=-1;q.push(t);}for(int i=1;i<=heights[0].size();i++){Node t;t.x=heights.size()+1,t.y=i,t.val=-1;q.push(t);}bfs(heights);for(int i=1;i<=heights.size();i++){for(int j=1;j<=heights[0].size();j++){if(vis[i][j]==2){vector<int>t;t.push_back(i-1);t.push_back(j-1);res.push_back(t);}}}return res;}
};
LeetCode 417. 太平洋大西洋水流问题--BFS相关推荐
- LeetCode 417.太平洋大西洋水流问题
LeetCode 417.太平洋大西洋水流问题 有一个 m × n 的长方形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋&qu ...
- Java实现 LeetCode 417 太平洋大西洋水流问题
417. 太平洋大西洋水流问题 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的 ...
- LeetCode 417. 太平洋大西洋水流问题(BFS/DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 广度优先搜索 2.2 DFS 深度优先搜索 1. 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度. "太平洋&q ...
- LeetCode 417. 太平洋大西洋水流问题 JAVA dfs
给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的右边界和下边界. 规定水流只能按 ...
- LeetCode 417 太平洋大西洋水流问题
题目描述 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左 边界和上边界,而"大西洋"处于大陆的右边界和下边界.规定 ...
- LeetCode 417. 太平洋大西洋水流问题【dfs】
题目描述 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的右边界和下边界. 规定 ...
- 417. 太平洋大西洋水流问题(medium) -力扣(leetCode)逆流而上,JS图的深度优先遍历算法
⚡️417. 太平洋大西洋水流问题⚡️ 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处 ...
- 力扣417 太平洋大西洋水流问题
417. 太平洋大西洋水流问题 - 力扣(LeetCode) 核心: 建立两个和给定矩阵宽高一致的矩阵,分别表示太平洋和大西洋 从边界出发,深度优先遍历矩阵,继续递归前进行条件的限制:结点没有超出界限 ...
- 417. 太平洋大西洋水流问题(DFS)
417. 太平洋大西洋水流问题 题目 解题思路 代码 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而" ...
最新文章
- 2022-2028年中国电动牙刷行业深度调研及投资前景预测报告(全卷)
- 最小化安装时没有ifconfig命令,没有firewalld.service
- 基于UNet和camvid数据集的道路分割
- C++里的花括号{},块,作用域
- Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子(转载)
- 预训练语言模型论文分类整理
- 生产者-消费者习题的运用
- java终止程序语句总结 System.exit(1)、System.exit(0)、return;break;continue;
- java反射机制原理详解
- Kmp算法(java)
- windows系统镜像文件汇总
- 人工智能之启发式搜索算法
- VTK学习之一(基本介绍、一个简单的VTK例子)
- 中华通史.上古史-夏
- 金庸武侠内功排行榜TOP10
- 苹果手机充电口接触不良怎么办_苹果连充电口都要干掉?
- Science复活远古“蛋白质”,揭示光合作用的“昨天、今天和明天”
- 用山脊图展示后验分布
- PhpStorm2019 代码自动换行
- java基础测试大集合 今天收罗精选一下Java题 适合小白挑战和新手回顾
热门文章
- 门店故事不好讲,CEO提前减持,万物新生(爱回收)或重蹈“优信”覆辙
- python云图制作壮观天体照_Python爬取个人博客,带你制作高逼格的数据聚合云图...
- IPhone8 升级变砖复活记
- 20+ Twitter开源软件精选
- 6.824 Spring 2021 -- Lab 2A
- 正则表达式:不匹配特定的字符串
- 抖音商务团队三面java_腾讯抖音iOS岗位三面面经
- 地表温度反演(大气上行、下行亮度及大气透过率的查找)
- 投:分众传媒相关文章
- go每日新闻--2021-01-03