当前位置: 首页 > news >正文

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;}
};

相关文章:

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…...

Python字符串模糊匹配工具:TheFuzz 库详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在处理文本数据时&#xff0c;常常需要进行模糊字符串匹配来找到相似的字符串。Python的 TheFuzz 库提供了强大的方法用于解决这类问题。本文将深入介绍 TheFuzz 库&#xff0c;探讨其基本概念、常用方法和示例代…...

Golang中WebSocket和WSS的支持

引言 WebSocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它为实时通信提供了一种简单而强大的方式。而WSS&#xff08;WebSocket Secure&#xff09;是一种通过加密的方式使用WebSocket的协议&#xff0c;可以在安全的传输层上进行通信。本文将探讨Golang中WebS…...

亚马逊云科技re:Invent大会,助力安全构建规模化生成式AI应用

2023亚马逊云科技re:Invent全球大会进入第三天&#xff0c;亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian博士在周三的主题演讲中&#xff0c;为大家带来了关于亚马逊云科技生成式AI的最新能力、面向生成式AI时代的数据战略以及借助生成式AI应用提高生产效率的精彩分…...

价差后的几种方向,澳福如何操作才能盈利

在价差出现时&#xff0c;澳福认为会出现以下几种方向。 昂贵资产的贬值和便宜资产的平行升值。昂贵的资产贬值&#xff0c;而便宜的资产保持不变。昂贵资产的贬值和便宜资产的平行贬值&#xff0c;但昂贵资产的贬值速度更快&#xff0c;超过便宜资产。更贵的一对的进一步升值和…...

【Java】类和对象之超级详细的总结!!!

文章目录 前言1. 什么是面向对象&#xff1f;1.2面向过程和面向对象 2.类的定义和使用2.1什么是类&#xff1f;2.2类的定义格式2.3类的实例化2.3.1什么是实例化2.3.2类和对象的说明 3.this引用3.1为什么会有this3.2this的含义与性质3.3this的特性 4.构造方法4.1构造方法的概念4…...

机器学习的复习笔记3-回归的细谈

一、回归的细分 机器学习中的回归问题是一种用于预测连续型输出变量的任务。回归问题的类型和特点如下&#xff1a; 线性回归&#xff08;Linear Regression&#xff09;&#xff1a;线性回归是回归问题中最简单的一种方法。它假设自变量与因变量之间存在线性关系&#xff0c…...

Git常用命令#切换分支

要在 Git 中切换分支&#xff0c;你可以使用 git checkout 命令。 a.创建新分支并切换到该分支 如果你想要创建一个新分支并立即切换到该分支&#xff0c;可以使用以下命令&#xff1a; git checkout -b 新分支名这会创建一个名为 新分支名 的新分支&#xff0c;并将你的工作目…...

【qml入门教程系列】:qml property使用介绍

作者:令狐掌门 技术交流QQ群:675120140 博客地址:https://mingshiqiang.blog.csdn.net/ 文章目录 属性的定义property基本用法属性变更事件通知属性绑定属性别名只读属性默认属性 default property访问和修改属性方式1:使用setProperty方法方式2:使用QQmlContext设置属性自定…...

pbootcms建站

pbootcms建站 一、下载pbootcms二、安装1、进入宝塔面在网站栏&#xff0c;新建站点&#xff0c;将该址里面文件全部清再将下载的pbootcms上传至该地址。 三、修改关联数据库1、在根目录下/config打开database.php照如下修改这里我使用mysqli数据库。修改并使用自已创建的数据库…...

Spring的事务传播行为

文章目录 说一下Spring的事务传播行为 今天来和大家聊聊spring中使用的事务传播行为&#xff0c; 说一下Spring的事务传播行为 spring事务的传播行为说的是&#xff0c;当多个事务同时存在的时候&#xff0c;spring如何处理这些事务的行为。 ① PROPAGATION_REQUIRED&#xf…...

04_网络编程

网络编程 什么是网络编程 可以让设备中的程序与网络上其他设备中的程序进行数据交互&#xff08;实现网络通信的&#xff09; java.net.* 包下提供了网络编程的解决方案 通信的基本架构 CS 架构&#xff08;Client 客户端 / Server 服务端&#xff09;BS 架构&#xff08;…...

【五分钟】熟练使用numpy.cumsum()函数(干货!!!)

引言 numpy.cumsum()函数用于计算输入数组的累积和。当输入是多维数组时&#xff0c;numpy.cumsum()函数可以沿着指定轴计算累积和。 计算一维数组的累计和 代码如下&#xff1a; # 计算一维数组的累计和 tmp_array np.ones((4,), dtypenp.uint8) # [1, 1, 1, 1] print(&…...

由11月27日滴滴崩溃到近两个月国内互联网产品接二连三崩溃引发的感想

文章目录 知乎文分析微信聊天截图微信公众号 滴滴技术 发文k8s 官方文档滴滴官方微博账号 近两个月国内互联网产品“崩溃”事件2023-10-23 语雀崩溃2023-11-12 阿里云崩溃2023-11-27 滴滴崩溃2023-12-03 腾讯视频崩溃总结 我的感想 知乎文分析 最近连续加班&#xff0c;打车较…...

Python按要求从多个txt文本中提取指定数据

基本想法 遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件&#xff0c;并从每一个文本文件中&#xff0c;找到我们需要的指定数据&#xff0c;最后得到所有文本文件中我们需要的数据的集合 举例 如现有名为file一个文件夹&#xff0c;里面含有大量的.txt格…...

DFT新手教程:VASP中ISIF取值设置

新手初学VASP计算时首先接触到的就是结构优化的计算任务。 在结构优化中&#xff0c;INCAR中的关键参数包括 IBRION &#xff0c;NSW&#xff0c;ISIF&#xff0c;EDIFF和EDIFFG 各个参数均可在vaspwiki查到可设置的参数以及该参数所具有的设置的含义。 https://www.vasp.at/…...

pytest自动化框架之allure测试报告的用例描述设置

allure测试报告的用例描述相关方法&#xff1b;如下图 allure标记用例级别severity 在做自动化测试的过程中&#xff0c;测试用例越来越多的时候&#xff0c;如果执行一轮测试发现了几个测试不通过&#xff0c;我们也希望能快速统计出缺陷的等级。 pytest结合allure框架可以对…...

在编程中遇到的问题总结

IDEA空包粘黏问题 创建好目录以后会发现idea自动将空包合并在一起了&#xff0c;而且点击设置里面也没有Compact Middle Package Compact Middle Package如果不在设置的主面板上&#xff0c;则点击Tree Appearance&#xff0c;会发现Compact Middle Package在Tree Appearance里…...

【数据库设计和SQL基础语法】--SQL语言概述--SQL的基本结构和语法规则(二)

一、数据控制语言&#xff08;DCL&#xff09; 1.1 授权&#xff08;GRANT&#xff09; 数据控制语言&#xff08;DCL&#xff09;是SQL的一个子集&#xff0c;用于控制数据库中的数据访问和权限。GRANT语句是DCL中的一种&#xff0c;用于向用户或角色授予特定的数据库操作权…...

easyexcel多级表头导出各级设置样式(继承HorizontalCellStyleStrategy实现)

easyexcel多级表头导出各级设置样式&#xff08;继承HorizontalCellStyleStrategy实现&#xff09; package com.example.wxmessage.entity;import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;…...

AI工程化实战:基于Python工具箱构建生产级AI服务

1. 项目概述&#xff1a;一个AI驱动的Python开发工具箱 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“antarys-ai/python”。光看名字&#xff0c;你可能会觉得这又是一个普通的Python库或者某个AI框架的封装。但当我深入进去&#xff0c;发现它的定位其实相当独特&am…...

Win10/Win11网络适配器‘罢工’终极排查指南:从驱动、服务到协议栈的完整修复流程

Win10/Win11网络适配器深度修复指南&#xff1a;从驱动到协议栈的全面诊断 当你的Windows设备突然无法联网&#xff0c;只剩下孤零零的飞行模式图标时&#xff0c;那种焦虑感每个IT从业者都深有体会。上周我的主力开发机就遭遇了这样的"罢工"事件——所有网络连接突然…...

Moveit2 automaticaddison mycobot_ros2 代码讲解

github地址 https://github.com/automaticaddison/mycobot_ros2/tree/jazzy 一.mycobot_moveit_config 1.moveit2基本控制 在mycobot_moveit_config下面创建config/mycobot_280 initial_positions.yaml 定义了机械臂所有关节的初始位置 joint_limits.yaml 定义每个关节的…...

避开这些坑!在Quartus中设计硬布线CPU时,我的控制器和PC模块是如何调试的

硬布线CPU调试实战&#xff1a;从BEQ失效到波形分析的深度排错指南 当你在Quartus中完成单周期CPU的数据通路搭建&#xff0c;满心欢喜点击仿真按钮时&#xff0c;最令人崩溃的莫过于看到BEQ指令毫无反应、存储器读写数据错乱、或者PC计数器像脱缰野马般失去控制。这些看似简单…...

xAI解散并入SpaceX,马斯克AI战略转向卖算力,太空AI之梦能否实现?

一、败者食尘xAI解散了&#xff1f;马斯克的Grok难道要凉凉&#xff1f;最近几天&#xff0c;这则新闻在科技圈里刷屏了&#xff0c;消息来源就是马斯克本人&#xff0c;他在社交账号上公布消息称&#xff0c;“xAI将解散并停止作为独立公司运营&#xff0c;会并入SpaceX AI&am…...

SITS2026正式发布倒计时72小时:这4类AI研发团队已紧急升级知识治理体系,你还在用Wiki+钉钉硬扛?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI研发知识管理&#xff1a;SITS2026专题 核心挑战与范式演进 AI研发正从单点模型训练转向全生命周期知识协同——SITS2026&#xff08;Semantic Intelligence & Traceable Systems 2026&#xf…...

告别炼丹玄学:用EfficientNet-B0到B7的缩放系数,在PyTorch里精准匹配你的算力

告别炼丹玄学&#xff1a;用EfficientNet-B0到B7的缩放系数&#xff0c;在PyTorch里精准匹配你的算力 当你在个人GPU或边缘设备上部署深度学习模型时&#xff0c;是否经常遇到这样的困境&#xff1a;模型要么太大导致显存溢出&#xff0c;要么太小无法达到预期精度&#xff1f;…...

2012年Accellera标准演进:SystemC、UCIS与AMS如何重塑EDA设计流程

1. 回顾2012&#xff1a;Accellera在电子设计自动化标准演进中的关键一年对于从事半导体设计&#xff0c;特别是系统级设计、验证和IP集成的工程师来说&#xff0c;2012年是一个值得标记的年份。那一年&#xff0c;行业正从2008年金融危机后的缓慢复苏中走出&#xff0c;移动计…...

从绕接到焊接:硬件连接技术的演进与工程思维启示

1. 从“绕接”到“焊接”&#xff1a;一个硬件工程师的认知进化史十几年前&#xff0c;我刚踏入硬件设计这行&#xff0c;第一次在实验室的角落里看到前辈们用一把像笔一样的工具&#xff0c;将一根细细的导线在方形的金属柱上绕出紧密的螺旋。那是我与“绕接”技术的初次相遇。…...

GPT_ALL:统一AI模型接口,构建高效可维护的AI应用架构

1. 项目概述&#xff1a;一个面向全栈开发者的AI集成工具箱最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Eloquent-Algorithmics/GPT_ALL”。光看名字&#xff0c;你可能会觉得这又是一个围绕GPT的简单封装库&#xff0c;但实际深入进去&#xff0c;你会发现它的定位远…...