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

day-63 代码随想录算法训练营(19) 图论 part 02

1020.飞地的数量

分析:求不跟边界接壤的陆地的数量
思路一:深度优先遍历
  • 先从四个侧边找陆地,然后进行深度优先遍历,把所有接壤的陆地(1)全部转换成海洋(0)
    • 深度优先遍历:从四个方向进行递归遍历
  • 遍历整个图,统计所有陆地的数量。
class Solution {
public:int direct[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int res=0;void dfs(vector<vector<int>>&grid,int x,int y){grid[x][y]=0;for(int i=0;i<4;i++){int nextx=x+direct[i][0];int nexty=y+direct[i][1];if(nextx>=0 && nextx<grid.size() && nexty>=0 && nexty<grid[0].size()){//边界条件if(grid[nextx][nexty]==1){grid[nextx][nexty]=0;dfs(grid,nextx,nexty);}}}}int numEnclaves(vector<vector<int>>& grid) {int n=grid.size(),m=grid[0].size();for(int i=0;i<n;i++){if(grid[i][0]==1) dfs(grid,i,0);//左侧边if(grid[i][m-1]==1) dfs(grid,i,m-1);//右侧边}for(int j=0;j<m;j++){if(grid[0][j]==1) dfs(grid,0,j);//上侧边if(grid[n-1][j]==1) dfs(grid,n-1,j);//下侧边}for(int i=1;i<n-1;i++){//遍历整个图for(int j=1;j<m-1;j++){if(grid[i][j]==1) res++;}}return res;}
};

130.被围绕的区域

思路一:dfs
  • 依然是从四个侧面把陆地深度优先遍历,然后改成 A 字符
  • 然后遍历整个图,把剩余的陆地(必然被海水包裹)变为海水,A 字符变为陆地
class Solution {
public:int direct[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int res=0;void dfs(vector<vector<char>>&board,char target,int x,int y){board[x][y]=target;res++;for(int i=0;i<4;i++){int nextx=x+direct[i][0];int nexty=y+direct[i][1];if(nextx>=0 && nextx<board.size() && nexty>=0 && nexty<board[0].size()){if(board[nextx][nexty]=='O'){board[nextx][nexty]=target;dfs(board,target,nextx,nexty);}}}}void solve(vector<vector<char>>& board) {int n=board.size(),m=board[0].size();for(int i=0;i<n;i++){if(board[i][0]=='O') dfs(board,'A',i,0);//左侧边if(board[i][m-1]=='O') dfs(board,'A',i,m-1);//右侧边}for(int j=0;j<m;j++){if(board[0][j]=='O') dfs(board,'A',0,j);//上侧边if(board[n-1][j]=='O') dfs(board,'A',n-1,j);//下侧边}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(board[i][j]=='A') board[i][j]='O';//所有的A变为Oelse if(board[i][j]=='O') board[i][j]='X';//所有的O变为X}} }
};

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

思路一:深度优先遍历
  • 分别从大西洋和太平洋一侧,倒着推得到两个数组
  • 当两个数组都经过同一位置时,说明可以流向两边
class Solution {
public:int direct[4][2]={{1,0},{-1,0},{0,1},{0,-1}};void dfs(vector<vector<int>>&heights,vector<vector<bool>>&visted,int x,int y){if(visted[x][y]) return;visted[x][y]=true;for(int i=0;i<4;i++){int nextx=x+direct[i][0];int nexty=y+direct[i][1];if(nextx>=0 && nextx<heights.size() && nexty>=0 && nexty<heights[0].size()){if(heights[x][y]<=heights[nextx][nexty])//本来是从高到低,这是倒着推,所以低到高dfs(heights,visted,nextx,nexty);}}}vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {int n=heights.size(),m=heights[0].size();vector<vector<int>>res;vector<vector<bool>>pacific(n,vector<bool>(m,false));//太平洋vector<vector<bool>>atlantic(n,vector<bool>(m,false));//大西洋for(int i=0;i<n;i++){dfs(heights,pacific,i,0);//从左侧太平洋出发dfs(heights,atlantic,i,m-1);//从右侧大西洋出发}for(int j=0;j<m;j++){dfs(heights,pacific,0,j);//从上侧太平洋出发dfs(heights,atlantic,n-1,j);//从下侧大西洋出发}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(pacific[i][j] && atlantic[i][j])//从大西洋和太平洋都可以流过res.push_back({i,j});}}return res;}
};

相关文章:

day-63 代码随想录算法训练营(19) 图论 part 02

1020.飞地的数量 分析&#xff1a;求不跟边界接壤的陆地的数量 思路一&#xff1a;深度优先遍历 先从四个侧边找陆地&#xff0c;然后进行深度优先遍历&#xff0c;把所有接壤的陆地&#xff08;1&#xff09;全部转换成海洋&#xff08;0&#xff09; 深度优先遍历&#xf…...

SpringBoot的全局异常拦截

在 Spring Boot 中&#xff0c;可以通过使用 ControllerAdvice 注解和 ExceptionHandler 注解来实现全局异常拦截。 RestControllerAdvice RestControllerAdvice 是 Spring Framework 提供的注解&#xff0c;用于定义全局异常处理类&#xff0c;并且结合 ExceptionHandler 注…...

『力扣每日一题11』:转换成小写字母

一、题目 给你一个字符串 s &#xff0c;将该字符串中的大写字母转换成相同的小写字母&#xff0c;返回新的字符串。 示例 1&#xff1a; 输入&#xff1a;s "Hello" 输出&#xff1a;"hello"示例 2&#xff1a; 输入&#xff1a;s "here" 输…...

复习Day07:链表part03:21. 合并两个有序链表、2. 两数相加

之前的blog链接&#xff1a;https://blog.csdn.net/weixin_43303286/article/details/131700482?spm1001.2014.3001.5501 我用的方法是在leetcode再过一遍例题&#xff0c;明显会的就复制粘贴&#xff0c;之前没写出来就重写&#xff0c;然后从拓展题目中找题目来写。辅以Lab…...

Ubuntu中启动HDFS后没有NameNode解决办法

关闭进程&#xff1a; stop-dfs.sh 格式化&#xff1a; hadoop namenode -format 出现报错信息&#xff1a; 23/10/03 22:27:04 WARN fs.FileUtil: Failed to delete file or dir [/usr/data/hadoop/tmp/dfs/name/current/fsimage_0000000000000000000.md5]: it still exi…...

AWS-Lambda之导入自定义包-pip包

参考文档&#xff1a; https://repost.aws/zh-Hans/knowledge-center/lambda-import-module-error-python https://blog.csdn.net/fxtxz2/article/details/112035627 简单来说,以 " alibabacloud_dyvmsapi20170525 " 包为例 ## 创建临时目录 mkdir /tmp cd ./tmp …...

MAC 如何解决GitHub下载速度慢的问题

说在前面 解决github下载速度慢的方法很多&#xff0c;本文主要介绍通过Git镜像的方式解决下载慢的问题。 主要步骤有&#xff1a;1、找到gitconfig文件&#xff0c; 2、通过git命令查看当前生效的config 配置 3、使用git config命令编辑并添加国内镜像源 1、gitconfig 文件在…...

Redis与分布式-哨兵模式

接上文 Redis与分布式-主从复制 1.哨兵模式 启动一个哨兵&#xff0c;只需要修改配置文件即可&#xff0c; sentinel monitor lbwnb 1247.0.0.1 6001 1先将所有服务关闭&#xff0c;然后修改配置文件&#xff0c;redis Master&#xff0c;redis Slave&#xff0c;redis Slave…...

创建型设计模式 原型模式 建造者模式 创建者模式对比

创建型设计模式 单例 工厂模式 看这一篇就够了_软工菜鸡的博客-CSDN博客 4.3 原型模式 4.3.1 概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 4.3.2 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了…...

HTML详细基础(二)文件路径

目录 一.相对路径 二.绝对路径 三.超链接标签 四.锚点链接 首先&#xff0c;扩展一些HTML执行的原理&#xff1a; htmL(hypertext markup Language) 是一种规范&#xff08;或者说是一种标准&#xff09;&#xff0c;它通过标记符&#xff08;tag&#xff09;来标记要显示…...

大数据-玩转数据-Flink 海量数据实时去重

一、海量数据实时去重说明 借助redis的Set&#xff0c;需要频繁连接Redis&#xff0c;如果数据量过大, 对redis的内存也是一种压力&#xff1b;使用Flink的MapState&#xff0c;如果数据量过大, 状态后端最好选择 RocksDBStateBackend&#xff1b; 使用布隆过滤器&#xff0c;…...

1.在vsCode上创建Hello,World

(1).编译器的安装配置 使用vsCode进行编写c语言,首先需要安装gcc编译器,可以自己去寻找资料或者gcc官网进行下载. 下载好后,将文件夹放入到自己指定的目录后,配置系统环境变量,将path指向编译器的bin目录 进入bin目录打开cmd,输入gcc -v,然后就会成功输出信息. (2).vsCode配…...

XrayGLM - 医学大模型

文章目录 关于 XrayGLM研究背景VisualGLM-6B 关于 XrayGLM XrayGLM: 首个会看胸部X光片的中文多模态医学大模型 | The first Chinese Medical Multimodal Model that Chest Radiographs Summarization. 基于VisualGLM-6B 微调 github : https://github.com/WangRongsheng/Xra…...

Hive 常见数据倾斜场景及解决方案(Map\Join\Reduce端)

目录 MapReduce流程简述a) Map倾斜b) Join倾斜c) Reduce倾斜 首先回顾一下MapReduce的流程 MapReduce流程简述 输入分片&#xff1a; MapReduce 作业开始时&#xff0c;输入数据被分割成多个分片&#xff0c;每个分片大小一般在 16MB 到 128MB 之间。这些分片会被分配给不同的…...

C++中的四种强制类型转换符详解

前 言 C 既支持 C 风格的类型转换&#xff0c;又有自己风格的类型转换。C 风格的转换格式很简单&#xff0c;但是有不少缺点&#xff1a; 转换太过随意&#xff0c;可以在任意类型之间转换。你可以把一个指向 const 对象的指针转换成指向非 const 对象的指针&#xff0c;把一…...

Windows电脑多开器的优缺点对比

Windows电脑多开器是一种能够让用户同时运行多个应用程序、游戏或者网页的软件工具。它的作用在于让用户能够更加高效地工作、学习或者娱乐。但是&#xff0c;这种软件也存在一些优劣势的对比。 优点&#xff1a; 提升工作效率。多开器可以让用户同时打开多个应用程序或者网页…...

Java笔记六(面向对象:类与对象)

面向对象编程的本质&#xff1a;以类的方式组织代码&#xff0c;以对象的组织&#xff08;封装&#xff09;数据 抽象 三大特征&#xff1a;封装 继承 多态 从认识角度考虑是先有对象后有类。对象&#xff0c;是具体的事物。类&#xff0c;是抽象的&#xff0c;是对对象的抽…...

Git使用【中】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析3 目录 &#x1f449;&#x1f3fb;分支管理分支概念git branch&#xff08;查看/删除分…...

Greenplum7一键安装

2023年9月底&#xff0c;Greenplum 发布了7.0.0版本&#xff0c;并于2023年10月03日开放了安装部署说明文档&#xff0c;现在快速尝鲜版的docker一键部署方式如下&#xff1a; mkdir /data/gpdb docker run -d --name greenplum -p 15432:5432 -v /data/gpdb:/data inrgihc/g…...

Springboo整合Sentinel

Springboo整合Sentinel 1.启动Sentinel java -jar sentinel-dashboard-1.8.6.jar2.访问localhost:8080到Sentinel管理界面(默认账号和密码都是sentinel) 3.引入依赖(注意版本对应) <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spr…...

轻量级代码同步工具codesyncer:P2P架构实现跨设备实时同步

1. 项目概述&#xff1a;一个被低估的代码同步利器如果你和我一样&#xff0c;经常需要在多台开发机、服务器甚至不同的云环境之间同步代码片段、配置文件或者小型项目&#xff0c;那你一定对那种“这台机器上有&#xff0c;那台机器上没有”的混乱感同身受。手动复制粘贴&…...

peaqOS 给机器发了一份穆迪式评级,机器经济缺的最后一块零件被补上了

作者&#xff1a;PaperMoon团队 “It’s time for blockchain to live up to its full potential。” 这种句子在 2026 年的 Web3 推文里已经少见了&#xff0c;大部分项目方学会了克制。peaq 这次不克制&#xff0c;而且把"全新资产类别"这种 2017 年级别的措辞重新…...

从U盘到移动硬盘:深入拆解USB存储设备里的BOT和UASP协议栈

从U盘到移动硬盘&#xff1a;深入拆解USB存储设备里的BOT和UASP协议栈 当你将一块移动固态硬盘插入电脑的USB 3.2接口&#xff0c;期待每秒上千兆字节的传输速度时&#xff0c;是否想过这背后隐藏着怎样的协议魔法&#xff1f;在USB存储设备的世界里&#xff0c;BOT&#xff08…...

从内核恐慌到系统恢复:一次NMI watchdog触发的soft lockup深度诊断

1. 当服务器突然卡死&#xff1a;从NMI watchdog错误说起 那天下午3点&#xff0c;机房警报突然响起。我冲到服务器前&#xff0c;屏幕上赫然显示着刺眼的红色错误&#xff1a;"NMI watchdog: BUG: soft lockup - CPU#2 stuck for 23s!"。这台承载着核心业务的服务器…...

Unity项目瘦身实战:彻底搞懂Library文件夹,轻松清理几十个G的缓存

Unity项目瘦身实战&#xff1a;彻底搞懂Library文件夹&#xff0c;轻松清理几十个G的缓存 当你打开资源管理器&#xff0c;发现Unity项目的Library文件夹已经吞噬了50GB磁盘空间时&#xff0c;那种窒息感就像发现衣柜里塞满了十年没穿过的旧衣服。这个隐藏在项目根目录下的&quo…...

从MWC 2016看5G与物联网:技术演进、产业博弈与生态构建

1. 从巴塞罗那看2016年移动通信的十字路口 时间回到2016年初&#xff0c;如果你身处通信行业&#xff0c;那么2月底的日程表上&#xff0c;巴塞罗那的“移动世界大会”绝对是一个绕不开的焦点。那不是一个普通的展会&#xff0c;更像是一个行业在技术迭代、市场转型和地缘政治多…...

苍穹外卖 项目记录 第四天

第四天任务 完成套餐管理模块所有业务功能&#xff0c;包括&#xff1a;新增套餐套餐分页查询删除套餐修改套餐起售停售套餐每个功能的实现都要按照一般开发流程&#xff1a;需求分析和设计(结合产品原型,接口设计,数据库设计) -> 代码实现 -> 功能测试(成功后提交代码)套…...

多智能体安全协调中的约束推断与CBF应用

1. 多智能体安全协调中的约束推断方法概述在分布式多智能体系统中&#xff0c;安全协调一直是个极具挑战性的问题。想象一下&#xff0c;当一群机器人在仓库中协同搬运货物时&#xff0c;每个机器人可能只知道部分环境信息&#xff08;比如某些障碍物的位置&#xff09;&#x…...

深入解析Arm架构TLB维护机制与A64指令集

1. TLB维护机制基础解析在处理器架构中&#xff0c;TLB&#xff08;Translation Lookaside Buffer&#xff09;是内存管理单元&#xff08;MMU&#xff09;的核心组件&#xff0c;负责缓存虚拟地址到物理地址的转换结果。当CPU需要访问内存时&#xff0c;首先会查询TLB获取地址…...

STM32CubeMX呼吸灯实战:用TIM3的PWM模式驱动LED(附完整代码与重映射避坑指南)

STM32CubeMX呼吸灯实战&#xff1a;用TIM3的PWM模式驱动LED&#xff08;附完整代码与重映射避坑指南&#xff09; 呼吸灯效果是嵌入式开发中经典的PWM应用场景&#xff0c;不仅能直观展示定时器功能&#xff0c;还能为产品增添交互美感。对于STM32开发者而言&#xff0c;利用Cu…...