LeetCode417. Pacific Atlantic Water Flow

文章目录

    • 一、题目
    • 二、题解

一、题目

There is an m x n rectangular island that borders both the Pacific Ocean and Atlantic Ocean. The Pacific Ocean touches the island’s left and top edges, and the Atlantic Ocean touches the island’s right and bottom edges.

The island is partitioned into a grid of square cells. You are given an m x n integer matrix heights where heights[r][c] represents the height above sea level of the cell at coordinate (r, c).

The island receives a lot of rain, and the rain water can flow to neighboring cells directly north, south, east, and west if the neighboring cell’s height is less than or equal to the current cell’s height. Water can flow from any cell adjacent to an ocean into the ocean.

Return a 2D list of grid coordinates result where result[i] = [ri, ci] denotes that rain water can flow from cell (ri, ci) to both the Pacific and Atlantic oceans.

Example 1:

Input: heights = [[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]]
Output: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]
Explanation: The following cells can flow to the Pacific and Atlantic oceans, as shown below:
[0,4]: [0,4] -> Pacific Ocean
[0,4] -> Atlantic Ocean
[1,3]: [1,3] -> [0,3] -> Pacific Ocean
[1,3] -> [1,4] -> Atlantic Ocean
[1,4]: [1,4] -> [1,3] -> [0,3] -> Pacific Ocean
[1,4] -> Atlantic Ocean
[2,2]: [2,2] -> [1,2] -> [0,2] -> Pacific Ocean
[2,2] -> [2,3] -> [2,4] -> Atlantic Ocean
[3,0]: [3,0] -> Pacific Ocean
[3,0] -> [4,0] -> Atlantic Ocean
[3,1]: [3,1] -> [3,0] -> Pacific Ocean
[3,1] -> [4,1] -> Atlantic Ocean
[4,0]: [4,0] -> Pacific Ocean
[4,0] -> Atlantic Ocean
Note that there are other possible paths for these cells to flow to the Pacific and Atlantic oceans.
Example 2:

Input: heights = [[1]]
Output: [[0,0]]
Explanation: The water can flow from the only cell to the Pacific and Atlantic oceans.

Constraints:

m == heights.length
n == heights[r].length
1 <= m, n <= 200
0 <= heights[r][c] <= 105

二、题解

class Solution {
public:int dirs[4][2] = {1,0,0,1,-1,0,0,-1};void dfs(vector<vector<int>>& heights,vector<vector<bool>>& visited,int x,int y){visited[x][y] = true;for(int i = 0;i < 4;i++){int nextX = x + dirs[i][0];int nextY = y + dirs[i][1];if(nextX < 0 || nextX >= heights.size() || nextY < 0 || nextY >= heights[0].size()) continue;if(heights[nextX][nextY] >= heights[x][y] && !visited[nextX][nextY]){dfs(heights,visited,nextX,nextY);}}}vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {int m = heights.size(),n = heights[0].size();vector<vector<bool>> pacificVisited(m,vector<bool>(n,false));vector<vector<bool>> atlanticVisited(m,vector<bool>(n,false));//标记左右for(int i = 0;i < m;i++){dfs(heights,pacificVisited,i,0);dfs(heights,atlanticVisited,i,n-1);}//标记上下for(int j = 0;j < n;j++){dfs(heights,pacificVisited,0,j);dfs(heights,atlanticVisited,m-1,j);}vector<vector<int>> res;//统计结果for(int i = 0;i < m;i++){for(int j = 0;j < n;j++){if(pacificVisited[i][j] && atlanticVisited[i][j]){res.push_back({i,j});}}}return res;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VLAN实验

题目要求 1.PC1和PC3所在接口为Access接口 2.PC2/4/5/6处于同一网段&#xff0c;其中PC2可以访问PC4/5/6PC4可以访问PC5,但不能访问PC6PC5不能访问PC6 3.PC1/3与PC2/4/5/6不在同一网段 4.所有PC通过DHCP获取IP地址&#xff0c;且PC1/3可以正常访问PC2/4/5/6题目分析 1.将交换…

Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(二)视图模板、静态资源访问

学习视频&#xff1a;孙哥说SpringMVC&#xff1a;结合Thymeleaf&#xff0c;重塑你的MVC世界&#xff01;&#xff5c;前所未有的Web开发探索之旅 衔接上文Spring MVC学习随笔-控制器(Controller)开发详解&#xff1a;控制器跳转与作用域&#xff08;一&#xff09; SpingMVC中…

基于SSM的职业高中智慧作业试题系统设计

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;JSP 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 一、…

Linux 系统渗透提权-Server2204

B-3:Linux 系统渗透提权 任务环境说明: 服务器场景:Server2204(关闭链接) 用户名:hacker 密码:123456 1.使用渗透机对服务器信息收集,并将服务器中 SSH 服务端口号作为 flag 提 交; Flag:2283/tcp

ssh无密码登录

服务器 要求ssh登录服务器不需要密码。 用户目录权限 假设当前用户名是username ls /home 输出如下 drwxr-xr-x 8 username username 4096 Mar 7 10:14 username/ 如果不是类似上面的第一列权限drwxr-xr-x&#xff0c;则需要手动修改权限 chmod 755 ~ 如果第三、四列不是use…

空间注意力:改变我们理解图像的方式

空间注意力&#xff1a;改变我们理解图像的方式 欢迎来到深度学习和计算机视觉的新时代&#xff0c;在这里&#xff0c;空间注意力机制正改变着我们理解和处理图像的方式。本文将深入探讨空间注意力的概念&#xff0c;它如何工作&#xff0c;以及为什么它在现代图像处理技术中…

YOLOv5改进 | 添加ECA注意力机制 + 更换主干网络之ShuffleNetV2

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本文给大家介绍一种轻量化部署改进方式&#xff0c;即在主干网络中添加ECA注意力机制和更换主干网络之ShuffleNetV2&#xff0c;希望大家学习之后&#xff0c;能够彻底理解其改进流程及方法~&#xff01;&#x1f308; 目…

2023年关于爬取Bilibili(B站)视频的一些最新资源和案例

2023年关于爬取Bilibili&#xff08;B站&#xff09;视频的一些最新资源和案例&#xff1a; Python爬取B站视频教程 &#xff1a;在Bilibili上发布了一个全面的Python教程系列&#xff0c;其中包括了专门关于爬取B站视频的部分。这个系列似乎涵盖了从基础到人工智能等Python主…

个人博客搭建保姆级教程-服务器篇

如果想要直接使用阿里云&#xff0c;将个人博客部署到公网上&#xff0c;可以看下第一部分的服务器选购。如果使用虚拟机的话&#xff0c;直接看第二部分即可。 一、阿里云服务器购买 可以考虑使用推广链接 云服务器ECS省钱攻略 购买&#xff0c; 点击立即购买之后选择 更多配…

基于英特尔平台及OpenVINO2023工具套件优化文生图任务

当今&#xff0c;文生图技术在很多领域都得到了广泛的应用。这种技术可以将文本直接转换为逼真的图像&#xff0c;具有很高的实用性和应用前景。然而&#xff0c;由于文生成图任务通常需要大量的计算资源和时间&#xff0c;如何在英特尔平台上高效地完成这些计算是一个重要的挑…

分布式事务有哪些解决方案?

本文我们来讨论下分布式事务的相关知识点。 分布式事务是分布式系统中非常重要的一部分&#xff0c;最典型的例子是银行转账和扣款&#xff0c;A 和 B 的账户信息在不同的服务器上&#xff0c;A 给 B 转账 100 元&#xff0c;要完成这个操作&#xff0c;需要两个步骤&#xff0…

Android11适配已安装应用列表

Android11适配已安装应用列表 之前做过已安装应用列表的适配&#xff0c;最近国内版SDK升级到33和隐私合规遇到很多问题&#xff0c;于是把已安装应用列表记录一下&#xff1a; 1、在Android11及以上的适配&#xff1a; package com.example.requestinsttallapplistdemoimpo…

RocketMQ领域模型详解

1、主题&#xff08;Topic&#xff09; 1.1、定义​ 主题是 Apache RocketMQ 中消息传输和存储的顶层容器&#xff0c;用于标识同一类业务逻辑的消息。 主题的作用主要如下&#xff1a; 定义数据的分类隔离&#xff1a; 在 Apache RocketMQ 的方案设计中&#xff0c;建议将不同…

【Docker实操】创建一个Nginx服务

一、不使用DockerFile 1、获取nginx官方镜像 docker pull nginx //拉取nginx官方镜像 docker image nginx //查看镜像2、创建项目目录 项目目录&#xff1a;/root/www2/nginx //如果当前目录在root mkdir www2 mkdir www2/nginx cd www2/nginx //进入项目目录3、创建源码文…

KRaft使用SASL_PLAINTEXT进行认证

需要有KRaft相关的基础&#xff0c;才行。可参阅之前学习记录Kafka 一、配置 首先需要了解SASL的含义&#xff0c;SASL全称为Simple Authentication and Security Layer&#xff0c;它主要是用于在客户端和服务器之间提供安全的身份验证机制。 Kafka 支持以下几种 SASL 验证…

MathType公式编辑器安装教程

一、下载 MathType7是一款可以帮助用户快速完成数学公式编辑的应用软件&#xff0c;这款软件适合在进行教育教学、科研机构、论文写作的时候使用。我们可以直接通过这款软件来获取到大量数学上使用到的函数、数学符号等内容&#xff0c;然后使用这些内容来完成公式编辑。 …

Centos7部署NFS

搭建NFS存储服务器--基于CentOS7系统 - jianmuzi - 博客园 在CentOS中搭建NFS - 陌上荼靡 - 博客园 NFS简介 NFS 是 Network FileSystem 的缩写&#xff0c;顾名思义就是网络文件存储系统&#xff0c;它最早是由 Sun 公司发展出来的&#xff0c;也是 FreeBSD 支持的文件系统…

Shell循环:expect(一)

一、名词解释&#xff1a; 我们通过Shell可以实现简单的控制流功能&#xff0c;如&#xff1a;循环、判断等。但是对于需要交互的场合则必须通过人工来干预&#xff0c;有时候我们可能会需要实现和交互程序如ssh服务器等进行交互的功能。而Expect就使用来实现这种功能的工具。E…

qt-C++笔记之addItem(), addWidget(), addLayout()

qt-C笔记之addItem(), addWidget(), addLayout() code review! 文章目录 qt-C笔记之addItem(), addWidget(), addLayout()0.《官方文档》相关示例截图1.ChatGPT解释2.《Qt 5.12实战》相关示例截图《Qt 5.12实战》&#xff1a;5.6 组合框 3.addWidget()4.addWidget()和addChil…

洛谷 P1656 炸铁路 - SPFA

文章目录 炸铁路题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题意解析思路CODE 炸铁路 题目描述 A 国派出将军 uim&#xff0c;对 B 国进行战略性措施&#xff0c;以解救涂炭的生灵。 B 国有 n n n 个城市&#xff0c;这些城市以铁路相连。任意两个城市都可以通…