代码随想录图论并查集 | 第六天 1971. 寻找图中是否存在路径 684.冗余连接

本文主要是介绍代码随想录图论并查集 | 第六天 1971. 寻找图中是否存在路径 684.冗余连接,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码随想录图论并查集 | 第六天 1971. 寻找图中是否存在路径 684.冗余连接

一、1971. 寻找图中是否存在路径

题目链接:https://leetcode.cn/problems/find-if-path-exists-in-graph/
思路:典型并查集模板题。

class Solution {int[] father = null;public boolean validPath(int n, int[][] edges, int source, int destination) {father = new int[n];init(n);for (int[] edge : edges) {join(edge[0], edge[1]);}return isSame(source, destination);}void init(int n) {for (int i = 0; i < n; i++) {father[i] = i;}}int find(int u) {if (father[u] == u) return u;return father[u] = find(father[u]);}boolean isSame(int u, int v) {u = find(u);v = find(v);return u == v;}void join(int u, int v) {u = find(u);v = find(v);if (u == v)return;father[v] = u;}
}

二、684.冗余连接

题目链接:https://leetcode.cn/problems/redundant-connection/
思路:并查集模板题,把有环的集合去掉一条边变成无环的,往father数组里join的过程就是添加树的过程,如果要添加的两个元素根节点一样,那就不要再加了可以返回了,加了就变环了。

class Solution {int[] father = null;public int[] findRedundantConnection(int[][] edges) {father = new int[1005];init();for (int[] edge : edges) {if (isSame(edge[0], edge[1])) return edge;else join(edge[0], edge[1]);}return null;}void init() {for (int i = 0; i < father.length; i++) {father[i] = i;}}int find(int u) {if (father[u] == u) return u;return father[u] = find(father[u]);}void join(int u, int v) {v = find(v);u = find(u);if (v == u) return;father[v] = u;}boolean isSame(int u, int v) {u = find(u);v = find(v);return u == v;}
}

这篇关于代码随想录图论并查集 | 第六天 1971. 寻找图中是否存在路径 684.冗余连接的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/329152

相关文章

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)