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

给定一个 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相关推荐

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

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

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

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

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

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

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

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

  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. 2022-2028年中国电动牙刷行业深度调研及投资前景预测报告(全卷)
  2. 最小化安装时没有ifconfig命令,没有firewalld.service
  3. 基于UNet和camvid数据集的道路分割
  4. C++里的花括号{},块,作用域
  5. Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子(转载)
  6. 预训练语言模型论文分类整理
  7. 生产者-消费者习题的运用
  8. java终止程序语句总结 System.exit(1)、System.exit(0)、return;break;continue;
  9. java反射机制原理详解
  10. Kmp算法(java)
  11. windows系统镜像文件汇总
  12. 人工智能之启发式搜索算法
  13. VTK学习之一(基本介绍、一个简单的VTK例子)
  14. 中华通史.上古史-夏
  15. 金庸武侠内功排行榜TOP10
  16. 苹果手机充电口接触不良怎么办_苹果连充电口都要干掉?
  17. Science复活远古“蛋白质”,揭示光合作用的“昨天、今天和明天”
  18. 用山脊图展示后验分布
  19. PhpStorm2019 代码自动换行
  20. java基础测试大集合 今天收罗精选一下Java题 适合小白挑战和新手回顾

热门文章

  1. 门店故事不好讲,CEO提前减持,万物新生(爱回收)或重蹈“优信”覆辙
  2. python云图制作壮观天体照_Python爬取个人博客,带你制作高逼格的数据聚合云图...
  3. IPhone8 升级变砖复活记
  4. 20+ Twitter开源软件精选
  5. 6.824 Spring 2021 -- Lab 2A
  6. 正则表达式:不匹配特定的字符串
  7. 抖音商务团队三面java_腾讯抖音iOS岗位三面面经
  8. 地表温度反演(大气上行、下行亮度及大气透过率的查找)
  9. 投:分众传媒相关文章
  10. go每日新闻--2021-01-03