算法学习(十二)并查集
并查集
1. 概念

并查集主要用于解决一些 元素分组 问题,通过以下操作管理一系列不相交的集合:
合并(Union):把两个不相交的集合合并成一个集合
查询(Find):查询两个元素是否在同一个集合中
具体实现方面,使用一个数组 parent 存储每个变量的 父节点信息(每个节点的连通分量信息),其中的每个元
素表示当前变量所在的连通分量的父节点信息,如果父节点是自身,说明该变量为所在连通分量的根节点。初始化时
所有变量的父节点都是它们自身
2. 解题技巧(我的总结)
1> 合并集合,两个集合有相似的性质,合并二者,以前一个集合的索引作为根。
性质map为空
对每个集合m, 索引i{
如果 m的性质 在 性质map 中 存在, 根为preIdx{
i 加入 preIdx
}否则{
性质map添加新健值对 (m性质, i)
}
}
| 题目 | 说明 | 实现 |
|---|---|---|
| 947. 移除最多的同行或同列石头 | 相同性质为:两个集合拥有相同的行号或列号,用一个map记录每个行号、列号第一次出现的位置 | 我的提交 |
| 721. 账户合并 | 相同性质为:两个集合拥有相同的元素,用一个map记录每个元素第一次出现的位置 | 我的提交 |
| 1722. 执行交换操作后的最小汉明距离 | AB交换、BC交换、…EF交换 <-> A、B、C、…、F可以任意交换 | 我的提交 |
3. 更多练习
基础
| 题目 | 说明 | 答案 |
|---|---|---|
| 990. 等式方程的可满足性 | 先将==全部合并,其次找出!=的根节点,如果一样则不行 | 通过 |
| 547. 省份数量 | 简单的并查集,维护连通分量个数,也可以 DFS 和 BFS | 通过 |
进阶
| 题目 | 说明 | 答案 |
|---|---|---|
| 959. 由斜杠划分区域 | 重点在将斜杠怎样拆分成单元格,外部添加成3*3(还可以DFS),内部分解成4*4 | 通过 DFS |
| 721. 账户合并 | 维护账户到id的哈希表mail2id以及id到账户数组的哈希表id2mails,合并含有相同账户的id | 通过 |
| 1697. 检查边长度限制的路径是否存在 | 离线查询(询问全部给出,但是没必要按照询问的顺序处理,可以排序之后离线处理),注意自定义 sort 排序时最好加上引用& | 通过 |
| 2503. 矩阵查询可获得的最大分数 | 可以考虑点权或者边权(边权就考虑较大边),排序之后然后离线查询,询问排序下标就可以,可以看看灵神视频题解 | 边权 点权 |
| 1584. 连接所有点的最小费用 | Kruskal 算法:构造边,排序之后合并连通分量,维护分量长度和节点个数 | 通过 |
- 399. 除法求值
- 803. 打砖块
- 1202. 交换字符串中的元素
4. 参考
- 使用并查集处理不相交集合问题(Java、Python)
- 「手画图解」手写UnionFind,并查集 不再畏惧
- LC2503:两种写法:离线询问 + 并查集 / 最小堆(Python/Java/C++/Go)
- 总库:tryHard
相关文章:
算法学习(十二)并查集
并查集 1. 概念 并查集主要用于解决一些 元素分组 问题,通过以下操作管理一系列不相交的集合: 合并(Union):把两个不相交的集合合并成一个集合 查询(Find):查询两个元素是否在同一…...
TensorRT及CUDA自学笔记003 NVCC及其命令行参数
TensorRT及CUDA自学笔记003 NVCC及其命令行参数 各位大佬,这是我的自学笔记,如有错误请指正,也欢迎在评论区学习交流,谢谢! NVCC是一种编译器,基于一些命令行参数可以将使用PTX或C语言编写的代码编译成可…...
数据库管理-第154期 Oracle Vector DB AI-06(20240223)
数据库管理154期 2024-02-23 数据库管理-第154期 Oracle Vector DB & AI-06(20240223)1 环境准备创建表空间及用户TNSNAME配置 2 Oracle Vector的DML操作创建示例表插入基础数据DML操作UPDATE操作DELETE操作 3 多Vector列表4 固定维度的向量操作5 不…...
解决uni-app vue3 nvue中使用pinia页面空白问题
main.js中,最关键的就是Pinia要return出去的问题,至于原因嘛! 很忙啊,先用着吧 import App from ./App import * as Pinia from pinia import { createSSRApp } from vue export function createApp() {const app createSSRApp(App);app.us…...
不用加减乘除做加法
1.题目: 写一个函数,求两个整数之和,要求在函数体内不得使用、-、*、/四则运算符号。 数据范围:两个数都满足 −10≤�≤1000−10≤n≤1000 进阶:空间复杂度 �(1)O(1),时间复杂度 &am…...
旅游组团自驾游拼团系统 微信小程序python+java+node.js+php
随着社会的发展,旅游业已成为全球经济中发展势头最强劲和规模最大的产业之一。为方便驴友出行,寻找旅游伙伴,更好的规划旅游计划,开发一款自驾游拼团小程序,通过微信小程序发起自驾游拼团,吸收有车或无车驴…...
LeetCode 第41天 | 背包问题 二维数组 一维数组 416.分割等和子集 动态规划
46. 携带研究材料(第六期模拟笔试) 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实…...
Ubuntu20.04和Windows11下配置StarCraft II环境
1.Ubuntu20.04 根据下面这篇博客就可以顺利安装: 强化学习实战(九) Linux下配置星际争霸Ⅱ环境https://blog.csdn.net/weixin_39059031/article/details/117247635?spm1001.2014.3001.5506 Ubuntu下显示游戏界面目前还没有解决掉。 大家可以根据以下链接看看能…...
【NCom】:通过高温气相合成调节Pt-CeO2相互作用以提高晶格氧的还原性
摘要:在这项工作中,我们比较了通过两种方法制备的 Pt 单原子催化剂(SAC)的 CO 氧化性能:(1)传统的湿化学合成(强静电吸附strong electrostatic adsorption–SEA)…...
git 将一个分支的提交移动到另一个分支
假设想把分支A上的最后一部分commit移动到分支B之上: 首先切到分支B git checkout B然后执行如下指令,commit id 为A分支上,需要移动的那些提交 git cherry-pick <commit id> ( <commit id> 可多个)中途可能遇到一些…...
vue3 实现 el-pagination页面分页组件的封装以及调用
示例图 一、组件代码 <template><el-config-provider :locale"zhCn"><el-pagination background class"lj-paging" layout"prev, pager, next, jumper" :pager-count"5" :total"total":current-page"p…...
#FPGA(IRDA)
1.IDE:Quartus II 2.设备:Cyclone II EP2C8Q208C8N 3.实验:IRDA(仿真接收一个来自0x57地址的数据0x22 (十进制34)) 4.时序图: 5.步骤 6.代码: irda_receive.v module irda_receive ( input wire…...
Sora—openai最新大模型文字生成视频
这里没办法发视频,发几个图片感受感受吧 OpenAI发布了Sora,一种文字生成视频的技术,从演示看,效果还是相当不错的。 Sora的强大之处在于其能够根据文本描述,生成长达 60秒的视频,其中包含精细复杂的场景…...
VoIP(Voice over Internet Protocol 基于IP的语音传输)介绍(网络电话、ip电话)
文章目录 VoIP(基于IP的语音传输)1. 引言2. VoIP基础2.1 VoIP工作原理2.2 VoIP协议 3. VoIP的优势和挑战3.1 优势3.2 挑战 4. VoIP的应用5. 总结 VoIP(基于IP的语音传输) 1. 引言 VoIP,全称Voice over Internet Prot…...
编程笔记 Golang基础 027 结构体
编程笔记 Golang基础 027 结构体 一、结构体的定义二、结构体的实例化1. 直接初始化2. 使用键值对初始化(即使字段顺序不一致也能正确赋值)3. 部分初始化(未指定的字段会得到它们类型的零值)4. 使用var声明和初始化5. 结构体字面量…...
opencascade15解析导出为step格式
#include "DisplayScene.h" // 包含显示场景的头文件 #include "Viewer.h" // 包含查看器的头文件// OpenCascade 包含 #include <BRepPrimAPI_MakeCylinder.hxx> // 创建圆柱体 #include <BinXCAFDrivers.hxx> // 二进制XCAF驱动程序 #includ…...
【软件设计模式之模板方法模式】
文章目录 前言一、什么是模板方法模式?二、模板方法模式的结构1. 抽象类定义2. 具体实现 三、模板方法模式的应用场景1. 算法重用2. 操作中的固定步骤3. 扩展框架的功能4. 提供回调方法5. 遵循开闭原则 四、模板方法模式的优缺点1. 优点代码复用扩展性好符合开闭原则…...
Spring Boot项目怎么对System.setProperty(key, value)设置的属性进行读取加解密
一、前言 之前我写过一篇文章使用SM4国密加密算法对Spring Boot项目数据库连接信息以及yaml文件配置属性进行加密配置(读取时自动解密),对Spring Boot项目的属性读取时进行加解密,但是没有说明对System.setProperty(key, value)设…...
Linux理解
VMware安装Linux安装 目录 VMware安装Linux安装 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2.1 主流操作系统 2.2 Linux系统版本 VMware安装Linux安装 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统。 1.2 为什么要学Linux 1). 企业用人…...
常用芯片学习——YC688语音芯片
YC688 广州语创公司语音芯片 使用说明 YC688是一款工业级的MP3语音芯片 ,完美的集成了MP3、WAV的硬解码。支持SPI-Flash、TF卡、U盘三种存储设备。可通过电脑直接更新SPI-Flash的内容,无需上位机软件。通过简单的串口指令即可完成三种存储设备的音频插…...
PaperDebugger:用代码调试思维提升学术论文可复现性的工具实践
1. 项目概述:一个为学术论文“排雷”的智能调试器如果你和我一样,常年混迹在学术圈或者技术研发一线,肯定对下面这个场景深恶痛绝:好不容易读完一篇几十页的论文,满心欢喜地准备复现其中的算法或实验,结果发…...
ESP-SR深度解析:嵌入式语音识别系统的架构设计与性能优化实战指南
ESP-SR深度解析:嵌入式语音识别系统的架构设计与性能优化实战指南 【免费下载链接】esp-sr Speech recognition 项目地址: https://gitcode.com/gh_mirrors/es/esp-sr 在物联网设备智能化浪潮中,语音交互已成为人机交互的重要入口。ESP-SR作为乐鑫…...
新手必看!CTFShow文件上传靶场通关保姆级教程(Web151-170全解析)
CTFShow文件上传靶场全解析:从入门到精通的实战指南 初识文件上传漏洞 文件上传功能几乎是每个Web应用都具备的基础模块,但恰恰是这个看似简单的功能,成为了无数安全漏洞的温床。在CTF竞赛中,文件上传类题目因其直观性和实战性&am…...
使用taotoken聚合api后模型响应延迟的实际体感观察
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用taotoken聚合api后模型响应延迟的实际体感观察 作为一名日常需要调用多种大模型API的开发者,将多个供应商的API接入…...
AI教材生成新趋势!低查重AI工具,让教材编写不再困难!
教材创作与AI工具助力 教材初稿终于写好了,然而修改和优化的过程却像是一场“折磨”!逐字逐句地检查逻辑错误和知识点不准确的地方,真的是耗费了不少时间;调整一个章节的结构,就会影响到后面好多部分,修改…...
盘点那些能让性能翻倍的C++现代特性
在C开发中,“性能”是压倒一切的核心诉求之一。虽然编译器在不断变聪明,但有些底层优化仍需开发者通过选用正确的语言特性来触发。今天这篇文章,我们就来盘点几个能给代码带来质跃式性能提升的 C 现代特性,并附带直观的代码示例。…...
为什么7-Zip-zstd让我的压缩效率提升了3倍?
为什么7-Zip-zstd让我的压缩效率提升了3倍? 【免费下载链接】7-Zip-zstd 7-Zip with support for Brotli, Fast-LZMA2, Lizard, LZ4, LZ5 and Zstandard 项目地址: https://gitcode.com/gh_mirrors/7z/7-Zip-zstd 你是否曾经面对一个巨大的项目备份文件&…...
BLE GATT客户端开发实战:从服务发现到数据解析
1. 项目概述与核心概念解析在物联网和可穿戴设备领域,蓝牙低功耗(BLE)技术因其低功耗和标准化协议栈,已成为短距离无线通信的首选方案。其核心通信模型基于GATT(通用属性配置文件),这是一种结构…...
终极指南:如何一键激活Cursor Pro完整功能,免费使用AI编程助手
终极指南:如何一键激活Cursor Pro完整功能,免费使用AI编程助手 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: You…...
5大隐藏功能揭秘:Markor如何重塑Android移动文本创作生态
5大隐藏功能揭秘:Markor如何重塑Android移动文本创作生态 【免费下载链接】markor Text editor - Notes & ToDo (for Android) - Markdown, todo.txt, plaintext, math, .. 项目地址: https://gitcode.com/gh_mirrors/ma/markor 在移动设备成为主要生产力…...
