【LeetCode热题100】【图论】岛屿数量

题目链接:200. 岛屿数量 - 力扣(LeetCode)

考察图的遍历,从岛上上下左右能到达的地方都是这个岛

首先需要判断图的边界,然后再上下左右继续深度遍历,并把遍历到的标记为已访问,可以原地修改图做标记

对于这道题来说,从是1的地方深度遍历,改写可以到达的地方,这样就是一个岛屿,如果还有1,说明还有岛屿

class Solution {
public:int rows, columns;vector<vector<char> > grid;bool isValid(int x, int y) {return x >= 0 && y >= 0 && x < rows && y < columns;}void dfs(int x, int y) {if (isValid(x, y) == false || grid[x][y] != '1')return;grid[x][y] = '2';dfs(x - 1, y);dfs(x + 1, y);dfs(x, y - 1);dfs(x, y + 1);}int numIslands(vector<vector<char> > &grid) {rows = grid.size();columns = grid[0].size();this->grid = move(grid);int ans = 0;for (int i = 0; i < rows; ++i)for (int j = 0; j < columns; ++j)if (this->grid[i][j] == '1') {dfs(i, j);++ans;}return ans;}
};

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

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

相关文章

linux下的chattr命令是什么意思

左手编程&#xff0c;右手年华。大家好&#xff0c;我是一点&#xff0c;关注我&#xff0c;带你走入编程的世界。 公众号&#xff1a;一点sir&#xff0c;关注领取编程资料 chattr 是一个用于修改 Linux 文件系统中文件或目录属性的命令行工具。它允许我们更改文件的特定属性&…

【python】计算水仙花数

【python】计算水仙花数 "水仙花数"是指一个3位数&#xff0c;它的三个位上的数字的3次幂之和等于它本身。例如&#xff0c;"153"就是一个水仙花数&#xff0c;因为1^3 5^3 3^3 153。以下是一个Python代码示例&#xff0c;用于计算并打印出所有的三位数…

konva.js 工具类

konva.js 工具类 import StringUtils from "./StringUtil.js";class KonvaCanvas {/*** 初始化画布* param {String} domId 容器dom id*/constructor(domId) {this.layer null;this.stage null;this.scale 1.0;this.init(domId);}/*** 聚焦到指定元素* param {St…

树和森林的遍历

一、树的先根遍历&#xff1a; 先根遍历&#xff1a;若树非空&#xff0c;先访问根结点&#xff0c;再依次对每棵子树进行先根遍历。 //树的先根遍历 void Pre0rder(TreeNode *R){if(R!NULL){visit(R); //访问根节点while(R还有下一个子树T)Pre0rder(T); …

OpenSBI初始化分析

OpenSBI初始化分析 OpenSBI初始化启动流程&#xff1a;主要涉及三个阶段 OpenSBI底层初始化 OpenSBI初始化 启动流程&#xff1a;主要涉及三个阶段 .S汇编阶段&#xff0c;主要是Opensbi的底层初始化阶段&#xff0c;为C准备执行环境&#xff1b;设备初始化阶段&#xff0c;此…

elmentui树形表格使用Sortable拖拽展开行时拖拽bug

1、使用elemntui的el-table使用Sortable进行拖拽&#xff0c;如下 const el this.$el.querySelector(.el-table__body-wrapper tbody) Sortable.create(el, {onEnd: (event) > {const { oldIndex, newIndex } event//拿到更新前后的下标即可完成数据的更新} })2、但是我这…

java中将1.1、3.3、6.6、0.0、0.0等double类型数据相加得到结果精度丢失问题

在项目中需要统计各个商品的价格。出现结果丢失问题。如下 问题代码 Testvoid contextLoads4() throws Exception{double a 3.3;double b 6.6;double c 1.1;double d 0.0;ArrayList<Double> arrayList new ArrayList();arrayList.add(a);arrayList.add(b);array…

【深度学习实战(9)】三种保存和加载模型的方式

一、state_dict方式&#xff08;推荐&#xff09; torch.save(model.state_dict(), PATH)model YourModel() model.load_state_dict(torch.load(PATH)) model.eval()记住一定要使用model.eval()来固定dropout和归一化层&#xff0c;否则每次推理会生成不同的结果。 二、整个…

pymysql +SQLAlchemy操作MySQL数据库(ORM)

一、sqlalchemy简介 SQLAlchemy是用Python编程语言开发的一个开源项目。它提供了SQL工具包和ORM&#xff08;对象关系映射&#xff09;工具&#xff0c;使用MIT许可证发行。 SQLAlchemy采用简单的Python语言&#xff0c;提供高效和高性能的数据库访问&#xff0c;实现了完整的…

倾斜摄影修模软件模方(ModelFun)4.1.0下载及安装教程

文章目录 一、模方(ModelFun)4.1.0安装二、模方(ModelFun)4.1.0下载一、模方(ModelFun)4.1.0安装 订阅专栏后(获取专栏内所有文章阅读权限及软件安装包),从文末下载软件模方(ModelFun)4.1.0安装包,如下所示,并开始安装。 1.计算机需要进入测试模式 键盘WIN+R,打开运行窗…

常用命令及简单shell语句

常用命令及简单shell语句 ● 删除注释和空行 sed -e "s/#.*//g" test_file.conf | awk {if (length !0) print $0} ● ES查看更多有关于集群信息、当前节点统计信息等等 curl -XGET http://ip:9200/_cat/nodes?pretty ● 过滤僵尸进程 ps -A -ostat,ppid,pid,cmd…

NLP(4)--实现一个线性层

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 感觉全连接层就像一个中间层转换数据的形态的,或者说预处理数据&#xff1f; 代码 里面有两个部分&#xff0c;一部分是自己实现的&#xff0c;一部分是利用模块的方法实现的。 import torch import torch.nn as nn import…

后端jar包部署常见运行和停止命令

目录 一、jar包运行最佳方式&#xff1a;nohup的方式运行&#xff0c;同时输出日志&#xff1a; 二、停止Jar包的运行&#xff1a; 一、jar包运行最佳方式&#xff1a;nohup的方式运行&#xff0c;同时输出日志&#xff1a; nohup java -jar xxx.jar > log.file 2>&…

【Tesla T4为例】GPU安装最新版本NVIDIA Driver、CUDA、cuDNN、Anaconda、Pytorch

NVIDIA Driver 进入英伟达官网下载页面 按照以上方式选择即可得到>535.113.01版本的驱动&#xff0c;可以实现多卡推理&#xff0c;小于这个版本会导致多卡训练以及推理报错 虽然最新版本为550.54.15&#xff0c;但是535版本更加稳定&#xff0c;并且pytorch目前只支持到1…

二叉树(Binary Tree)

二叉树(Binary Tree)是树的一种常见形式。二叉树的任意结点最多可以有两个子结点&#xff0c;也可以只有一个或者没有子结点。因此二叉树的度数一定小于等于2。二叉树结点的两个子结点&#xff0c;一个被称为左子结点&#xff0c;一个被称为右子结点。二叉树严格区分左右子结点…

YoutobeDNN

目录 1. 挑战 2. 系统整体结构 3.召回 4. 排序 5. 训练和测试样本的处理 1. 挑战 &#xff08;1&#xff09;规模。很多现有的推荐算法在小规模上效果好&#xff0c;但Youtobe规模很大。 &#xff08;2&#xff09;新颖度。Youtobe语料库是动态的&#xff0c;每秒都会有…

javaagent使用

Java Agent是什么&#xff1f; Java Agent是Java平台提供的一个强大工具&#xff0c;它可以在运行时修改或增强Java应用程序的行为。是在JDK1.5以后引入的&#xff0c;它能够在不影响正常编译的情况下修改字节码&#xff0c;相当于是在main方法执行之前的拦截器&#xff0c;也叫…

微服务架构中的业务模块的可扩展设计

目录 1. 概要设计 1.1 服务拆分与独立部署 1.1.1 精细化拆分 1.1.2 独立部署能力 1.2 接口设计与通信机制 1.2.1 标准化接口 1.2.2 轻量级通信 1.3 数据管理与一致性 1.3.1 分布式数据管理 1.3.2 数据分区与复制 1.4 负载均衡与集群化 1.4.1 负载均衡 1.4.2 集群化…

plugins:Swift-BigInt 计算 斐波那契数列

Swift-BigInt 是 Swift 5 的轻量级易于使用的任意精度算术库。 它支持大多数常见数学运算符的整数&#xff08;BInt&#xff09;和分数&#xff08;BDouble&#xff09;。 还实现了优化的数学函数&#xff0c;例如阶乘或gcd&#xff0c;并可通过 BIntMath 访问。 计算 斐波那契…

vue3第二十二节(defineOptions用途)

defineOptions() 3.3 版本以上才可以使用 引言&#xff1a; 在使用组件时候 默认情况下&#xff0c;父组件传递的&#xff0c;但没有被子组件解析为 props 的 attributes 绑定会被**“透传”**。这意味着当我们有 一个单根节点(多根节点的是无法透传的) 的子组件时&#xff0…