题意:枚举每一个点,看看是否能够从该点开始走,既能走到大西洋又能走到太平洋。

解题思路:这道题适合用宽搜来做,枚举每一个点,然后宽搜他周围的点,只能搜高度比他小的,如果其中有两条路,一条路能到达大西洋: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.太平洋大西洋水流问题相关推荐

  1. LC-417. 太平洋大西洋水流问题(多源BFS、DFS)

    417. 太平洋大西洋水流问题 难度中等558 有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋&quo ...

  2. 利用DFS解决太平洋大西洋水流问题

    二十五.太平洋大西洋水流问题 25.1.题设要求   有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋& ...

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

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

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

    力扣417题太平洋大西洋水流问题 题目描述:有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋" ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. CentOS系统安装(上):图形/文本界面安装
  2. c# 字典按ascii 排序_sort命令-将文件进行排序并输出
  3. Extjs 之 initComponent 和 constructor的区别(转)
  4. 电脑中linux系统在哪里设置密码,linux添加一个root级别账户并设置密码linux操作系统 -电脑资料...
  5. render注册一个链接组件_vue 动态加载并注册组件、 且通过 render动态创建该组件...
  6. post请求体 ajax,ajax的post请求 @RequestBody解析问题
  7. 奇葩属性:layout_weight 的解释及使用
  8. 【知识图谱】Louvain、LPA等5类经典社区发现算法 Python 实战
  9. php 导出excel接口,PHP实现导出Excel文件
  10. 创建office一直转圈_Microsoft Office 2019 VL for Mac(office系列全套装)
  11. 东南大学硕士毕业论文Latex 模版教程
  12. 适合 C++ 新手学习的开源项目——在 GitHub 学编程
  13. jOOQ 3.13.2 代码生成过程及解决 daos 无法生成的问题
  14. Java中static、this、super、final用法
  15. 【excel】如何绘制斜线表头
  16. 基于STM32蓝牙无线手环脉搏心率计步器体温监测设计
  17. C++ 宽字符 窄字符 char wchar
  18. 桌面宠物 ① 通过python制作属于自己的桌面宠物
  19. 虚拟机linux关机halt,linux关机命令halt
  20. MATLAB散点密度图的画法三

热门文章

  1. nginx降权+安装php
  2. oracle中每月调用一次,Oracle Job的使用(定时执行)
  3. 【Transformer开山之作】Attention is all you need原文解读
  4. Adobe国际认证证书介绍
  5. 框架Framework
  6. 《Python语言程序设计》王恺 王志 机械工业出版社 第一章 初识Python 课后习题答案
  7. 支付宝pc端支付回调处理
  8. 特斯拉召回超43万辆电动车,我们如何避免软件问题的召回?
  9. 比Everything还好用的搜索软件 - listary
  10. 华硕 N551 GPT分区安装win7 ghost+原版