当前位置: 首页 > news >正文

力扣-图论-3【算法学习day.53】

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


1.统计无向图中无法互相到达点对数

题目链接:2316. 统计无向图中无法互相到达点对数 - 力扣(LeetCode)

题面:

代码:

class Solution {public long countPairs(int n, int[][] edges) {UF uf = new UF(n);for (int[] edge : edges) {uf.union(edge[0], edge[1]);}int[] size = uf.size();// 记录所有分支的大小List<Integer> list = new ArrayList<>();Set<Integer> set = new HashSet<>();for (int i = 0; i < n; i++) {// 找到节点 i 的根节点// 注意:只有每个连通分量的根节点的 size[] 才可以代表该连通分量中的节点数int p = uf.find(i);// 已经加入 list 的节点直接跳过if (!set.contains(p)) list.add(size[p]);set.add(p);}long ans = 0;// 计算结果for (int sz : list) ans += (long) sz * (n - sz);// 注意 ➗ 2return ans / 2;}
}
/* ------------ 并查集模版 ------------ */
class UF {private int count;private int[] parent;private int[] size;public UF(int n) {this.count = n;parent = new int[n];size = new int[n];for (int i = 0; i < n; i++) {parent[i] = i;size[i] = 1;}}public void union(int p, int q) {int rootP = find(p);int rootQ = find(q);if (rootP == rootQ) return ;// 平衡性优化if (size[rootP] < size[rootQ]) {parent[rootP] = rootQ;size[rootQ] += size[rootP];} else {parent[rootQ] = rootP;size[rootP] += size[rootQ];}this.count--;}public boolean connected(int p, int q) {int rootP = find(p);int rootQ = find(q);return rootP == rootQ;}public int count() {return this.count;}// 增加了一个函数// 返回 size[]public int[] size() {return this.size;}public int find(int x) {// 路径压缩if (parent[x] != x) {parent[x] = find(parent[x]);}return parent[x];}
}

后言

上面是力扣图论专题,下一篇是其他的习题,希望有所帮助,一同进步,共勉!

http://www.lryc.cn/news/500914.html

相关文章:

  • Linux上的C语言编程实践
  • 芝法酱学习笔记(1.3)——SpringBoot+mybatis plus+atomikos实现多数据源事务
  • 【计算机网络】实验12:网际控制报文协议ICMP的应用
  • 收缩 tempdb 数据库
  • kubesphere搭建 postgres15
  • 解决npm问题用到的资源,错误原因和方法
  • 【uni-app 微信小程序】新版本发布提示用户进行更新
  • Redis性能优化18招
  • ElasticSearch 与向量数据库的结合实践:突破亿级大表查询瓶颈20241204
  • C#实现一个HttpClient集成通义千问-流式输出内容提取
  • 微信小程序后台搭建—node+mysql
  • 断点续传+测试方法完整示例
  • C# 中的静态构造函数和实例构造函数的区别
  • 如何在UI自动化测试中创建稳定的定位器?
  • 【5G】5G技术组件 5G Technology Components
  • 四十一:Web传递消息时的编码格式
  • 【细如狗】记录一次使用MySQL的Binlog进行数据回滚的完整流程
  • 什么是云原生数据库 PolarDB?
  • Kafka Stream实战教程
  • BEPUphysicsint定点数3D物理引擎使用
  • Splatter Image运行笔记
  • python爬虫--某房源网站验证码破解
  • Micropython编译ESP32C3开发板版本过程详细步骤步骤
  • 【开源免费】基于SpringBoot+Vue.JS大创管理系统(JAVA毕业设计)
  • mysql 和 tidb的区别
  • 传输层5——TCP可靠传输的实现(重点!!)
  • 基于Python实现web网页内容爬取
  • Centos7和9安装mysql5.7和mysql8.0详细教程(超详细)
  • 星闪WS63E开发板的OpenHarmony环境构建
  • MongoDB数据建模小案例