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

怎样做自己的网站和发布网站漯河网站建设

怎样做自己的网站和发布网站,漯河网站建设,网页制作软件中的三剑客,做平面设计去哪些网站找图java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 并查集 并查集 解题思路:时间复杂度O( n ∗ l o g 2…
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

文章目录

    • 并查集

在这里插入图片描述

并查集

解题思路:时间复杂度O( n ∗ l o g 2 n n*log_2n nlog2n),空间复杂度O( n n n)
  1. 并查集是图论的经典算法,主要用于处理不相交集合的合并问题,常用于求连通子图,求最小生成树的Kruskal算法和求最近公共祖先(LCA)等等
  2. 其代码操作非常简单,初始化init,查询find,合并union
  1. 初始化操作:用一个数组parent来存储每个顶点的祖先,初始时将自己设置为自己的祖先
    在这里插入图片描述
  2. 查询操作:找到i的祖先,index是否是祖先的条件为,parent[index] == index.入果不满足,就需要找到index的祖先x,并更新parent[index] = x
    在这里插入图片描述
  3. 合并操作:将两个集合index1和index2合并,直接找到两个集合的祖先x和y,让x指向y
    在这里插入图片描述
  1. 根据题目描述,一棵树中,边的数量比结点数量少1,但是现在加了一条边,让这颗树的边和结点数量一致了
  2. 树是连通无环的无向图,但是多了一条边就会出现环。也就是说,这道题的本质上就是让我们求出导致环出现的这条边(导致两个顶点属于同一连通分量的边)
  3. 使用并查集,每个集合代表一个连通分量,初始每个结点都属于不同连通分量。遍历每一条边连接的两个顶点
  1. 两个顶点属于不同连通分量,说明遍历到当前边之前,两个顶点不连通,因此当前边不会导致环的出现,则合并两个顶点的连通分量
  2. 两个顶点属于相同连通分量,说明在遍历到当前边之前,两个顶点已经连通(间接),而这条边又将两个顶点直接连通,从而导致环的出现,则它就是罪魁祸首。
代码

在这里插入图片描述

class Solution {public int[] findRedundantConnection(int[][] edges) {int n = edges.length;//顶点个数int[] parent = new int[n + 1];//并查集中下标从1开始for (int i = 1; i <= n; i++) {parent[i] = i;}//遍历每个顶点的边的信息for (int i = 0; i < n; i++) {int[] edge = edges[i];//获取顶点i的边int node1 = edge[0], node2 = edge[1];//获取两条边相邻的顶点if (find(parent, node1) != find(parent, node2)) {//如果和顶点i都不属于同一个集合(连通分量)union(parent, node1, node2);//说明这条边不会导致环的出现,将两个顶点加入并查集} else {//如果属于同一个集合,说明人家两个顶点已经间接连接一起了,现在你这条边居然又把我俩直接连接了起来return edge;//此边是构成环的罪魁祸首,将其返回}}return new int[0];//无结果返回空}//并查集代码,合并public void union(int[] parent, int index1, int index2) {//合并index1和index2的步骤为:找到index1的祖先,然后找到index2的祖先//让index1的祖先指向index2的祖先,完成两个集合的合并。parent[find(parent, index1)] = find(parent, index2);}//从parent中查找index的祖先public int find(int[] parent, int index) {if (parent[index] != index) {//如果index不是自己指向自己,说明它自己不是集合中的根节点(祖先),他也有自己的祖先parent[index] = find(parent, parent[index]);//不断找到其祖先,然后将其祖先记录到parent[index]位置,保证parent[index]只要find一次,就必须指向index的祖先}return parent[index];//返回自己的祖先}
}
http://www.yayakq.cn/news/891085/

相关文章:

  • 提供手机自适应网站建设维护宜兴百度推广公司
  • 织梦网站首页标签网络下载软件
  • 网站建设实训的意义app线上推广
  • 广东网页空间网站网站建设有没有
  • 昆山设计网站公司常熟建设合同备案在哪个网站
  • 网站关键词选取的方法贵州企业网站建设案例
  • 设计做网站如何做外围网站的代理
  • 如何弄一个网站中国建设银行官网下载
  • x域名免费网站专题学习网站开发流程
  • 网站建设工作量评估报价表最传统的网站推广手段
  • 好的提升设计师网站全国信息企业公示系统官网
  • 网站必须做商标么亳州网站建设公司
  • 网站模板整站资源从化公司网站建设
  • 中国城市建设研究院深圳分院网站免费咨询合同
  • 桂林市网站建设西安网站建设开发
  • 汽车展示网站建立网站如何盈利
  • 手机 dns 国外网站做公众号编辑用什么网站
  • 上海个人医疗网站备案广平企业做网站推广
  • 软文推广文章网站优化建议怎么写
  • 定做网站多少钱网站建设面谈销售话术
  • wordpress菜单调用标签关键词优化是什么意思
  • 福州网站推广优化医院网站建设情况
  • 个人网站首页布局设计做决定的网站
  • 外贸网站seo推广方案网站建设的主要产品
  • 门户网站建设汇报浏览广告赚钱的平台
  • 网站建设费用一年多少钱wordpress网络图片
  • 陕西省建设银行网站6如何衡量网站的价值
  • 网站怎么做h5支付宝支付接口长春制作网站软件
  • 做画册的国外网站南京seo排名优化公司
  • 潍城营销型网站建设线上运营的5个步骤