图论第二天

最近加班时间又多了,随缘吧,干不动就辞呗。真是想歇几天了,题不能停!!今天目前只做了一道题,先用两种方式把他搞出来。

695. 岛屿的最大面积

class Solution {
public:int neighbor[4][2] = {1,0,0,-1,-1,0,0,1};int count = 0;int maxAreaOfIsland(vector<vector<int>>& grid) {int n = grid.size();int m = grid[0].size();int result = 0;vector<vector<bool>>visited(n,vector<bool>(m,false));for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){if(visited[i][j] == 0 && grid[i][j] == 1){count = 1;visited[i][j] = 1;dfs(grid,visited,i,j);result = max(result,count);} }}return result;}void dfs(vector<vector<int>>& grid,vector<vector<bool>>&visited,int x,int y){for(int i = 0;i < 4;i++){int nextx = x + neighbor[i][0];int nexty = y + neighbor[i][1];if(nextx < 0 || nextx >= grid.size() || nexty < 0 || nexty >= grid[0].size())continue;if(visited[nextx][nexty] == 0 && grid[nextx][nexty] == 1){count++;visited[nextx][nexty] = 1;dfs(grid,visited,nextx,nexty);}}}
};

BFS方法默写如下

class Solution {
public:int result = 0;int neighbor[4][2] = {1,0,0,-1,-1,0,0,1};queue<pair<int,int>>que;int maxAreaOfIsland(vector<vector<int>>& grid) {int count = 0;int n = grid.size(),m = grid[0].size();vector<vector<bool>>visited(n,vector<bool>(m,false));for(int i = 0;i < n;i++){for(int j = 0;j<m;j++){if(visited[i][j] == false && grid[i][j] == 1){count = 1;visited[i][j] = true;bfs(grid,visited,i,j,count);result = max(count,result);}}}return result; }void bfs(vector<vector<int>>& grid,vector<vector<bool>>&visited,int x,int y,int &count){que.push({x,y});while(!que.empty()){pair<int,int>cur = que.front();que.pop();for(int i = 0;i < 4;i++){int nextx = cur.first + neighbor[i][0];int nexty = cur.second + neighbor[i][1];if(nextx < 0 || nextx >= grid.size() || nexty < 0 || nexty >= grid[0].size())continue;if(visited[nextx][nexty] == false && grid[nextx][nexty] == 1){visited[nextx][nexty] = true;count++;que.push({nextx,nexty});}}}}
};

所以那个count可以这么用,&改的话,还是改了那个地址的值的,如果没有&的话,那他在函数里就不变啦。

1020. 飞地的数量

目前感觉dfs和bfs的用法有一个认识了,dfs由于需要做回溯,感觉更难一点,后面优先练dfs。这题的dfs有点难度。。。

思路很牛逼,需要先将周边(四周)是陆地的变成海洋,再重新算一下陆地的数量即可。

class Solution {
public:int count  = 0;int neighbor[4][2] = {1,0,0,-1,-1,0,0,1};int numEnclaves(vector<vector<int>>& grid) {int n = grid.size();int 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 = 1;j<m-1;j++){if(grid[0][j] == 1 )dfs(grid,0,j);if(grid[n-1][j] == 1)dfs(grid,n-1,j);}count = 0;for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){if(grid[i][j] == 1)dfs(grid,i,j);}}return count;}void dfs(vector<vector<int>>& grid,int x,int y){grid[x][y] = 0;count++;for(int i = 0;i < 4;i++){int nextx = x + neighbor[i][0];int nexty = y + neighbor[i][1];if(nextx < 0 || nextx >= grid.size() || nexty < 0 || nexty >= grid[0].size())continue;if( grid[nextx][nexty] == 1){dfs(grid,nextx,nexty);}}}
};

力扣炸了???绝,提测交给明天。。。然后再改改看

BFS看起来是一样的思路,我就不做第二遍啦(count++似乎容易漏while里外都要有count++,估计提交就能了解这个错误。不多逼逼)

好累啊今天,打把炉石睡觉!

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

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

相关文章

Linux系统管理基础002

Linux系统管理基础之文件管理二 Linux文件管理是系统管理中的重要组成部分 1.文件与目录的基本概念 2. 特殊目录与文件 3. 文件与目录的操作 4. 文件权限管理 5. 查找处理文件 6. 关联技巧 今天给大家介绍一下目录的结构 1.文件与目录的基本概念 管理类目录&#xff1a; …

FreeRTOS基础(三):动态创建任务

上一篇博客&#xff0c;我们讲解了FreeRTOS中&#xff0c;我们讲解了创建任务和删除任务的API函数&#xff0c;那么这一讲&#xff0c;我们从实战出发&#xff0c;规范我们在FreeRTOS下的编码风格&#xff0c;掌握动态创建任务的编码风格&#xff0c;达到实战应用&#xff01; …

用贪心算法进行10进制整数转化为2进制数

十进制整数转二进制数用什么方法&#xff1f;网上一搜&#xff0c;大部分答案都是用短除法&#xff0c;也就是除2反向取余法。这种方法是最基本最常用的&#xff0c;但是计算步骤多&#xff0c;还容易出错&#xff0c;那么还有没有其他更好的方法吗&#xff1f; 一、短除反向取…

AdroitFisherman模块安装日志(2024/5/31)

安装指令 pip install AdroitFisherman-0.0.29.tar.gz -v 安装条件 1:Microsoft Visual Studio Build Tools 2:python 3.10.x 显示输出 Using pip 24.0 from C:\Users\12952\AppData\Local\Programs\Python\Python310\lib\site-packages\pip (python 3.10) Processing c:\u…

matlab GUI界面设计

【实验内容】 用MATLAB的GUI程序设计一个具备图像边缘检测功能的用户界面&#xff0c;该设计程序有以下基本功能&#xff1a; &#xff08;1&#xff09;图像的读取和保存。 &#xff08;2&#xff09;设计图形用户界面&#xff0c;让用户对图像进行彩色图像到灰度图像的转换…

3-哈希表-21-两个数组的交集-LeetCode349

3-哈希表-21-两个数组的交集-LeetCode349 参考&#xff1a;代码随想录 LeetCode: 题目序号349 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&…

2.1 OpenCV随手简记(二)

为后续项目学习做准备&#xff0c;我们需要了解LinuxOpenCV、Mediapipe、ROS、QT等知识。 一、图像显示与保存 1、基本原理 1.1 图像像素存储形式 首先得了解下图像在计算机中存储形式&#xff1a;(为了方便画图&#xff0c;每列像素值都写一样了)。对于只有黑白颜色的灰度…

[有监督学习]2.详细图解正则化

正则化 正则化是防止过拟合的一种方法&#xff0c;与线性回归等算法配合使用。通过向损失函数增加惩罚项的方式对模型施加制约&#xff0c;有望提高模型的泛化能力。 概述 正则化是防止过拟合的方法&#xff0c;用于机器学习模型的训练阶段。过拟合是模型在验证数据上产生的误…

Java文件IO

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:JUC常见类&#x1f649; &#x1f439;今日诗词:东风吹柳日初长&#xff0c;雨馀芳草斜阳&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&…

Three.js 研究:4、创建设备底部旋转的科技感圆环

1、实现效果 2、PNG转SVG 2.1、原始物料 使用网站工具https://convertio.co/zh/png-svg/进行PNG转SVG 3、导入SVG至Blender 4、制作旋转动画 4.1、给圆环着色 4.2、修改圆环中心位置 4.3、让圆环旋转起来 参考一下文章 Three.js 研究&#xff1a;1、如何让物体动起来 Thre…

LeetCode # 1070. 产品销售分析 III

1070. 产品销售分析 III 题目 销售表 Sales&#xff1a; ------------------ | Column Name | Type | ------------------ | sale_id | int | | product_id | int | | year | int | | quantity | int | | price | int | ------------------ (sale_id, year) 是这张表的主键&am…

“论SOA在企业集成架构设计中的应用”必过模板,突击2024软考高项论文

考题部分 企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA&#xff09;的新型企业应用集成技术&#xff0c;强调将企业和组织内部的资源和业务功…

VSCode界面Outline只显示类名和函数名,隐藏变量名

参考链接 https://blog.csdn.net/Zjhao666/article/details/120523879https://blog.csdn.net/Williamcsj/article/details/122401996 VSCode中界面左下角的Outline能够方便快速跳转到文件的某个类或函数&#xff0c;但默认同时显示变量&#xff0c;导致找某个函数时很不方便。…

mimkatz获取windows10明文密码

目录 mimkatz获取windows10明文密码原理 lsass.exe进程的作用 mimikatz的工作机制 Windows 10的特殊情况 实验 实验环境 实验工具 实验步骤 首先根据版本选择相应的mimikatz 使用管理员身份运行cmd 修改注册表 ​编辑 重启 重启电脑后打开mimikatz 在cmd切换到mi…

Seq2Seq模型:详述其发展历程、深远影响与结构深度剖析

Seq2Seq&#xff08;Sequence-to-Sequence&#xff09;模型是一种深度学习架构&#xff0c;专为处理从一个输入序列到一个输出序列的映射任务设计。这种模型最初应用于机器翻译任务&#xff0c;但因其灵活性和有效性&#xff0c;现已被广泛应用于自然语言处理&#xff08;NLP&a…

医院该如何应对网络安全?

在线医生咨询受到很多人的关注&#xff0c;互联网医疗行业的未来发展空间巨大&#xff0c;但随着医院信息化建设高速发展 医院积累了大量的患者基本信息、化验结果、电子处方、生产数据和运营信息等数据 这些数据涉及公民隐私、医院运作和发展等多因素&#xff0c;医疗行业办…

【QEMU中文文档】1.关于QEMU

本文由 AI 翻译&#xff08;ChatGPT-4&#xff09;完成&#xff0c;并由作者进行人工校对。如有任何问题或建议&#xff0c;欢迎联系我。联系方式&#xff1a;jelin-shoutlook.com。 QEMU 是一款通用的开源机器仿真器和虚拟化器。 QEMU 可以通过几种不同的方式使用。最常见的用…

OrangePi AIpro--新手上路

目录 一、SSH登录二、安装VNC Sevice&#xff08;经测试Xrdp远程桌面安装不上&#xff09;2.1安装xface桌面2.2 配置vnc服务2.2.1 设置vnc server6-8位的密码2.2.2 创建vnc文件夹&#xff0c;写入xstartup文件2.2.3 给xstartup文件提高权限2.2.4 在安装产生的vnc文件夹创建xsta…

C# 工厂模式学习

工厂模式&#xff08;Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的接口&#xff0c;而不是通过具体类来实例化对象。工厂模式可以将对象的创建过程封装起来&#xff0c;使代码更具有灵活性和可扩展性。 工厂模式有几种常见的实现方式&…

Go 如何通过 Kafka 客户端库 生产与消费消息

文章目录 0.前置说明1. confluent-kafka-go2. sarama3. segmentio/kafka-go4. franz-go选择建议 1.启动 kafka 集群2.安装 confluent-kafka-go 库3.创建生产者特殊文件说明如何查看.log文件内容 4.创建消费者 0.前置说明 Go 语言中有一些流行的 Kafka 客户端库。以下是几个常用…