力扣labuladong一刷day46天并查集
力扣labuladong一刷day46天并查集
文章目录
- 力扣labuladong一刷day46天并查集
- 一、323. 无向图中连通分量的数目
- 二、130. 被围绕的区域
- 三、990. 等式方程的可满足性
一、323. 无向图中连通分量的数目
题目链接:https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/description/
思路:求联通分量一般是通过并查集,而构建并查集则非常简单,使用一个数组模拟森林,每个槽位记录对应的父节点,合并两个集合时只需要把一个根节点作为另一个根节点的子节点,此外为了提升效率,在查询根节点的过程中可以采用压缩路径的方法,即不断的让当前节点与其父节点做兄弟。
class Solution {public int countComponents(int n, int[][] edges) {UF uf = new UF(n);for (int[] edge : edges) {uf.union(edge[0], edge[1]);}return uf.count;}class UF {int[] parent;int count;public UF(int n) {parent = new int[n];for (int i = 0; i < n; i++) {parent[i] = i;}count = n;}int find(int x) {if (parent[x] != x) {parent[x] = find(parent[x]);}return parent[x];}boolean connected(int x, int y) {return find(x) == find(y);}void union(int x, int y) {int p = find(x);int q = find(y);if (p == q) return;parent[p] = q;count--;}}
}
二、130. 被围绕的区域
题目链接:https://leetcode.cn/problems/surrounded-regions/
思路:这是一个岛屿问题,也是棋盘问题,其实描述的是一件事情。一般采用dfs解决。本题要求与边界不相邻的修改为X,与边界相邻的不动。其实我们可以只dfs与边界相邻的,修改为A。之后直接for循环遍历棋盘,把O改为X,把A改为O。
class Solution {public void solve(char[][] board) {int row = board.length, col = board[0].length;for (int i = 0; i < row; i++) {if (board[i][0] == 'O') dfs(board, i, 0);if (board[i][col-1] == 'O') dfs(board, i, col-1);}for (int i = 0; i < col; i++) {if (board[0][i] == 'O') dfs(board, 0, i);if (board[row-1][i] == 'O') dfs(board, row-1, i);}for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (board[i][j] == 'O') board[i][j] = 'X';if (board[i][j] == 'A') board[i][j] = 'O';}}}void dfs(char[][] board, int x, int y) {if (x < 0 || x >= board.length || y < 0 || y >= board[0].length || board[x][y] != 'O') return;board[x][y] = 'A';dfs(board, x-1, y);dfs(board, x+1, y);dfs(board, x, y-1);dfs(board, x, y+1);}
}
三、990. 等式方程的可满足性
题目链接:https://leetcode.cn/problems/satisfiability-of-equality-equations/
思路:把相等的进行连接,然后逐个判断不等的看看是否在一个联通里,如果不等的在一个联通里即不满住可满足性。
class Solution {public boolean equationsPossible(String[] equations) {UF uf = new UF(26);for (String s : equations) {if (s.charAt(1) == '=') {uf.union(s.charAt(0)-'a', s.charAt(3)-'a');}}for (String s : equations) {if (s.charAt(1) == '!') {if (uf.connected(s.charAt(0)-'a', s.charAt(3)-'a')) {return false;}}}return true;}class UF {int[] parent;int count;public UF(int n) {parent = new int[n];for (int i = 0; i < n; i++) {parent[i] = i;}count = n;}int find(int x) {if (x != parent[x]) {parent[x] = find(parent[x]);}return parent[x];}boolean connected(int x, int y) {return find(x) == find(y);}void union(int x, int y) {int a = find(x);int b = find(y);if (a == b)return;parent[a] = b;count--;}}
}
相关文章:
力扣labuladong一刷day46天并查集
力扣labuladong一刷day46天并查集 文章目录 力扣labuladong一刷day46天并查集一、323. 无向图中连通分量的数目二、130. 被围绕的区域三、990. 等式方程的可满足性 一、323. 无向图中连通分量的数目 题目链接:https://leetcode.cn/problems/number-of-connected-co…...
C++11(上):新特性讲解
C11新特性讲解 前言1.列表初始化1.1{ }初始化1.2std::initializer_list 2.类型推导2.1 auto2.2 typeid2.3 decltype 3.范围for4.STL的变化4.1新容器4.2容器的新方法 5.右值引用和移动语义5.1 左值引用和右值引用5.2 左值引用与右值引用比较5.3 右值引用的使用场景5.4 右值、左值…...
将mapper.xml保存为idea的文件模板
将mapper.xml保存为idea的文件模板 在idea的File and Code Templates中将需要使用模板的内容添加为模板文件。 那么接下来请看图,跟着步骤操作吧。 mapper.xml文件内容 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper P…...
LabVIEW在横向辅助驾驶系统开发中的应用
LabVIEW在横向辅助驾驶系统开发中的应用 随着横向辅助驾驶技术的快速发展,越来越多的研究致力于提高该系统的效率和安全性。项目针对先进驾驶辅助系统(ADAS)中的横向辅助驾驶进行深入研究。在这项研究中,LabVIEW作为一个强大的系…...
STM32移植LVGL图形库
1、问题1:中文字符keil编译错误 解决方法:在KEIL中Options for Target Flash -> C/C -> Misc Controls添加“--localeenglish”。 问题2:LVGL中显示中文字符 使用 LVGL 官方的在线字体转换工具: Online font converter -…...
迪文屏开发保姆级教程5—表盘时钟和文本RTC显示
这篇文章要讲啥事呢? 本篇文章主要介绍了在DGBUS平台上使用表盘时钟和文本时钟RTC显示功能的方法。 文哥悄悄话: 官方开发指南PDF:(不方便下载的私聊我发给你) https://download.csdn.net/download/qq_21370051/8864…...
免费IDEA插件推荐-Apipost-Helper
IDEA插件市场中的API调试插件不是收费(Fast Request )就是不好用(apidoc、apidocx等等)今天给大家介绍一款国产的API调试插件:Apipost-Helper,完全免费且好看好用! 这款插件由Apipost团队开发的…...
Django(二)
1.django框架 1.1 安装 pip install django3.21.2 命令行 创建项目 cd 指定目录 django-admin startproject 项目名mysite ├── manage.py [项目的管理工具] └── mysite├── __init__.py├── settings.py 【配置文件,只有一部分…...
Kafka集群架构服务端核心概念
目录 Kafka集群选举 controller选举机制 Leader partition选举 leader partition自平衡 partition故障恢复机制 follower故障 leader故障 HW一致性保障 HW同步过程 Epoch Kafka集群选举 1. 在多个broker中, 需要选举出一个broker, 担任controller. 由controller来管理…...
【vscode插件】之插件图标设置
ChatgGPT4.0国内站点: 海鲸AI-支持GPT(3.5/4.0),文件分析,AI绘图 在Visual Studio Code中创建插件时,你可以为你的插件设置一个图标,这个图标会在VS Code的插件市场和插件侧边栏中显示。以下是设置插件图标的步骤: 准备…...
网络安全学习-NTFS安全权限、文件共享
NTFS安全权限 权限概述 设置NTFS权限,实现不同用户访问不同对象(文件、文件夹)的权限分配正确访问权限后,用户才能访问资源设置权限防止资源被篡改、删除 文件系统概述 文件系统就是这个分区的存储格式,不建立文件…...
如何使用GPT4写一篇综述
使用 GPT-4 或任何其他高级语言模型来撰写一篇综述文章,需要遵循一系列的步骤来确保内容的准确性、深度和组织性。以下是一些指导步骤: 确定主题和范围 明确你想要综述的主题。这可以是一个科学领域的特定方面、技术发展、理论进展等。 确定综述的范围和…...
【网络编程】基于UDP数据报实现回显服务器程序
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 前言 我们如果…...
Jenkins自动化构建打包,部署
1.环境准备 上传jdk,maven和tomcat的包,解压到/usr/local下并配置环境变量。 配置jdk [rootserver04 ~]# vim /etc/profile.d/java.sh JAVA_HOME/usr/local/java export PATH$JAVA_HOME/bin:$PATH##加载环境变量 [rootserver04 ~]# source /etc/profi…...
python画图【00】Anaconda和Pycharm和jupyter的使用
①Anaconda ②Pycharm 一、Anaconda安装步骤 1、双击安装包,点击next。 2、点我同意I agree 3、 4、选择需要安装的位置,位置可根据自己情况安装到具体位置,但要记住安装到了哪里。然后点击next 5、可选择加入到环境变量,…...
【hive】Hive中的大宽表及其底层详细技术点
简介: 在大数据环境中,处理大规模数据集是常见的需求。为了满足这种需求,Hive引入了大宽表(Large Wide Table)的概念,它是一种在Hive中管理和处理大量列的数据表格。本文将详细介绍Hive中的大宽表概念以及其底层的详细…...
铁死亡调控机制新发现——癌症篇
随着癌细胞对凋亡产生抗性,非细胞凋亡死亡模式的铁死亡成为对抗治疗耐药癌症的新策略,对传统疗法产生耐药性的细胞或转移性癌细胞已被证明对铁死亡的敏感性增加。因此,靶向癌症中的铁死亡调控元件可能提供新的治疗机会。 今年5月来自德国维尔…...
MySQL 数据库系列课程 05:MySQL命令行工具的配置
一、Windows启动命令行工具 (1)打开 Windows 的开始菜单,找到安装好的 MySQL,点击MySQL 8.0 Command Line Client - Unicode,这个带有 Unicode 的,是支持中文的,允许在命令行中敲中文。 &…...
LeetCode 2703. 返回传递的参数的长度
请你编写一个函数 argumentsLength,返回传递给该函数的参数数量。 示例 1: 输入:args [5] 输出:1 解释: argumentsLength(5); // 1 只传递了一个值给函数,因此它应返回 1。 示例 2: 输入&a…...
MySQL的聚簇索引和非聚簇索引的区别以及示例
MySQL的聚簇索引和非聚簇索引 聚簇索引 聚簇索引是一种索引结构,它与数据行存储在一起,即索引的叶子节点就是数据行本身。在MySQL中,主键索引就是一种典型的聚簇索引。 涉及情况 当查询需要按照主键或唯一索引进行精确查找时,…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
