news 2026/4/17 2:34:37

代码随想录 并查集理论基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录 并查集理论基础

一、背景

1.并查集可解决的问题:并查集常用来解决连通性问题。也就是说当我们需要判断两个元素是否在同一个集合里的时候,就想到要用并查集

2.并查集的功能:

(1)将两个元素添加到一个集合中。

(2)判断两个元素在不在同一个集合。

二、原理:从代码层面上讲,如何将两个元素添加到同一个集合中?

1.错误想法:

(1)放到同一个数组或者set或者map中,这样就表示两个元素在同一个集合(但是这么多元素分门别类,可不止一个集合,可能是成百上千个集合,这时会定义很多的数组,不好实现)。

(2)定义一个二维数组(但是如果要判断两个元素是否在同一个集合的时候,只能把二维数组都遍历一遍;每当想添加一个元素到某集合的时候,依然需要把二维数组都遍历一遍,才知道要放到哪个集合里,代码实现逻辑非常复杂)。

2.正确思路:

(1)将三个元素A,B,C(分别是数字)放在同一个集合,其实就是将三个元素连通在一起,如何连通?只需要用一个一维数组来表示,即:father[A] = B,father[B] = C,这样就能表述A与B与C连通了(有向连通图)。

代码如下所示:

// 将v,u 这条边加入并查集 void join(int u, int v) { u = find(u); // 寻找u的根 v = find(v); // 寻找v的根 if (u == v) return; // 如果发现根相同,则说明在一个集合,不用两个节点相连直接返回 father[v] = u; }

(2)find函数的寻根过程,就是通过数组下标找到数组元素,然后一层一层地寻根,代码如下所示。

// 并查集里寻根的过程 int find(int u) { if (u == father[u]) return u; // 如果根就是自己,直接返回
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 15:04:23

代码随想录 1971.寻找图中是否存在路径

方法一&#xff1a;并查集class Solution {private int[] p;public boolean validPath(int n, int[][] edges, int source, int destination) {p new int[n];for(int i 0;i < n;i){p[i] i;}for(int[] e : edges){p[find(e[0])] find(e[1]);}return find(source) find(d…

作者头像 李华
网站建设 2026/4/17 8:42:32

告别等待:CentOS 7.6镜像极速下载方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个CentOS 7.6镜像加速下载工具。利用多线程、CDN优选和P2P技术提升下载速度。自动选择最快的镜像站点&#xff0c;支持断点续传。包含速度测试功能&#xff0c;可实时显示下载…

作者头像 李华
网站建设 2026/4/16 18:02:23

1小时搞定:用ResizeObserver快速原型设计

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个快速原型工具&#xff0c;允许用户通过简单配置生成响应式组件&#xff1a;1) 提供10种常见组件模板(导航栏、卡片、表格等) 2) 拖拽定义resize观察点 3) 可视化配置回调行…

作者头像 李华
网站建设 2026/4/16 14:41:37

AI如何帮你理解C语言基础:从#include <stdio.h>开始

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 使用AI生成一个简单的C语言程序&#xff0c;解释#include <stdio.h>的作用。程序应包含一个基本的输入输出示例&#xff0c;比如打印Hello, World!和读取用户输入。代码需有详…

作者头像 李华
网站建设 2026/4/17 7:53:57

通过微调提升RAG系统的回复质量

一、模型能力对RAG系统的关键影响 在典型RAG架构中,大语言模型(LLM)的基准能力直接决定系统输出的可靠性,其性能瓶颈主要体现在领域知识适配性缺陷、结构化输出控制薄弱、性能被部署环境限制三个维度。 1. 领域知识适配性缺陷 通用大模型(如DeepSeek-R1、GPT-4、Claude…

作者头像 李华
网站建设 2026/4/17 8:35:43

平面设计小白入门:从软件安装到第一个作品的完整指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个零基础平面设计学习向导&#xff0c;包含以下步骤&#xff1a;1. 必备软件安装包获取方式 2. Photoshop基础界面导览 3. 简单海报设计分步教学 4. 常见问题解答模块 5. 作品…

作者头像 李华