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

永久网站建设网站及微信建设是否涉及知识产权

永久网站建设,网站及微信建设是否涉及知识产权,网站建设济南云畅网络技术有限公司,高校档案网站建设卡码网题目: 108. 冗余的边109. 冗余的边II 其他: 今日总结 往期打卡 108. 冗余的边 跳转: 108. 冗余的边 学习: 代码随想录公开讲解 问题: 有一个图,它是一棵树,他是拥有 n 个节点(节点编号1到n)和 n - 1 条边的连通无环无向图…

卡码网题目:

  • 108. 冗余的边
  • 109. 冗余的边II

其他:

今日总结
往期打卡


108. 冗余的边

跳转: 108. 冗余的边

学习: 代码随想录公开讲解

问题:

有一个图,它是一棵树,他是拥有 n 个节点(节点编号1到n)和 n - 1 条边的连通无环无向图,例如如图:
在这里插入图片描述
现在在这棵树上的基础上,添加一条边(依然是n个节点,但有n条边),使这个图变成了有环图,如图:
在这里插入图片描述
先请你找出冗余边,删除后,使该图可以重新变成一棵树。

思路:

题目保证只有一条冗余边,所以直接在join时判断就可以记录到无法加入的那条,然后直接输出即可.

复杂度:

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( n ) O(n) O(n)

代码:

import java.util.*;
class Main{private static int[] parent;private static int xn,yn;private static int find(int x){return x==parent[x]?x:(x=find(parent[x]));}private static boolean isSamed(int x,int y){int a = find(x);int b = find(y);return a==b;}private static void join(int x,int y){int a = find(x);int b = find(y);if(a==b){xn = x;yn = y;return;}parent[b] = parent[a];}public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();parent = new int[n+1];for(int i=1;i<=n;i++){parent[i] = i;}for(int i=0;i<n;i++){int x = sc.nextInt();int y = sc.nextInt();join(x,y);}System.out.println(xn+" "+yn);}
}

109. 冗余的边II

跳转: 109. 冗余的边II

学习: 代码随想录公开讲解

问题:

有一种有向树,该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。有向树拥有 n 个节点和 n - 1 条边。如图:
在这里插入图片描述
现在有一个有向图,有向图是在有向树中的两个没有直接链接的节点中间添加一条有向边。如图:
在这里插入图片描述
输入一个有向图,该图由一个有着 n 个节点(节点编号 从 1 到 n),n 条边,请返回一条可以删除的边,使得删除该条边之后该有向图可以被当作一颗有向树。

思路:

这题也是一条冗边
但由于是有向边,不能简单的记录那个连接成环的边(因为要保证每个节点只能有一个父级且根节点没有父级)
这题需要记录所有的边,并记录入度,如果有入度为2的节点就不能简单删除,只能对那个入度为2的点的两条入边删除,而且并不是所有删除都合法,如果删除后剩下的节点依然有循环不构成一棵树,就是非法,需额外判断.
如果没有入度为2的点(说明连到了根节点上),则可以在冗余时直接删除即可
题目中说明要最后出现的一条边,所以需要注意去除边是从后到前(双端队列就是尾部开始),验环是从前到后(双端队列就是从头到尾,foreach遍历是从头到尾)

复杂度:

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( n ) O(n) O(n)

代码:

import java.util.*;
class Main{private static int[] parent;private static int n;private static void init(){for(int i=1;i<=n;i++){parent[i] = i;}}private static int find(int x){return x==parent[x]?x:(x=find(parent[x]));}private static boolean isSamed(int x,int y){int a = find(x);int b = find(y);return a==b;}private static void join(int x,int y){int a = find(x);int b = find(y);if(a==b) return;parent[b] = parent[a];}public static void main(String[] args){Scanner sc = new Scanner(System.in);Deque<int[]> stack = new LinkedList<>();n = sc.nextInt();int[] inDegree = new int[n+1];parent = new int[n+1];int target = -1;for(int i=0;i<n;i++){int x = sc.nextInt();int y = sc.nextInt();stack.add(new int[]{x,y});inDegree[y]++;if(inDegree[y]==2){target = y;}}if(target!=-1){for(int i=0;i<n;i++){int[] arr = stack.pollLast();if(arr[1]==target&&isTree(stack)){System.out.println(arr[0]+" "+arr[1]);return;}stack.addFirst(arr);}}getRemoveEdge(stack);}private static void getRemoveEdge(Collection<int[]> list) {init();for(int[] arr:list){if(isSamed(arr[0],arr[1])){System.out.println(arr[0]+" "+arr[1]);return;}join(arr[0],arr[1]);}}private static boolean isTree(Collection<int[]> list) {init();for(int[] arr:list){if(isSamed(arr[0],arr[1])) return false;join(arr[0],arr[1]);}return true;}
}

总结

练习了并查集找循环节点

往期打卡

代码随想录算法训练营第四十六&四十七天

代码随想录算法训练营第四十五天

代码随想录算法训练营第四十四天

代码随想录算法训练营第四十二&四十三天

代码随想录算法训练营第四十一天

代码随想录算法训练营第四十天

代码随想录算法训练营第三十九天

代码随想录算法训练营第三十八天

代码随想录算法训练营第三十七天

代码随想录算法训练营第三十五&三十六天

代码随想录算法训练营第三十四天

代码随想录算法训练营第三十三天(补)

代码随想录算法训练营第三十二天

代码随想录算法训练营第三十一天

代码随想录算法训练营第三十天(补)

代码随想录算法训练营第二十九天

代码随想录算法训练营第二十八天

代码随想录算法训练营第二十七天(补)

代码随想录算法训练营第二十六天

代码随想录算法训练营第二十五天

代码随想录算法训练营第二十四天

代码随想录算法训练营第二十三天

代码随想录算法训练营周末四

代码随想录算法训练营第二十二天(补)

代码随想录算法训练营第二十一天

代码随想录算法训练营第二十天

代码随想录算法训练营第十九天

代码随想录算法训练营第十八天

代码随想录算法训练营第十七天

代码随想录算法训练营周末三

代码随想录算法训练营第十六天

代码随想录算法训练营第十五天

代码随想录算法训练营第十四天

代码随想录算法训练营第十三天

代码随想录算法训练营第十二天

代码随想录算法训练营第十一天

代码随想录算法训练营周末二

代码随想录算法训练营第十天

代码随想录算法训练营第九天

代码随想录算法训练营第八天

代码随想录算法训练营第七天

代码随想录算法训练营第六天

代码随想录算法训练营第五天

代码随想录算法训练营周末一

代码随想录算法训练营第四天

代码随想录算法训练营第三天

代码随想录算法训练营第二天

代码随想录算法训练营第一天


文章转载自:

http://AalPgizE.htLfr.cn
http://9TYm4wW8.htLfr.cn
http://40rgEoRF.htLfr.cn
http://JUb8PJZN.htLfr.cn
http://g6ZMfmlV.htLfr.cn
http://tH3zoZ1v.htLfr.cn
http://TIDAVTrg.htLfr.cn
http://k7iG2F6H.htLfr.cn
http://ZVX5tBaa.htLfr.cn
http://UL18bv1N.htLfr.cn
http://q3grVOij.htLfr.cn
http://5Ar8Sblo.htLfr.cn
http://9g0kX9YG.htLfr.cn
http://Suvi7ZRP.htLfr.cn
http://R6hchDx5.htLfr.cn
http://65eW7Swk.htLfr.cn
http://ynBJxuQP.htLfr.cn
http://UFOkQG09.htLfr.cn
http://AdLWRZUL.htLfr.cn
http://VTKq8Als.htLfr.cn
http://pgVkF3r5.htLfr.cn
http://aOkbHebA.htLfr.cn
http://tvczF53b.htLfr.cn
http://YRaSsDgL.htLfr.cn
http://YkS6Pxne.htLfr.cn
http://ce1HDVmq.htLfr.cn
http://tngfRFzl.htLfr.cn
http://aaJ0jXOD.htLfr.cn
http://CpI59ZBX.htLfr.cn
http://pLUwIQkW.htLfr.cn
http://www.dtcms.com/wzjs/630602.html

相关文章:

  • 江门网站自助建站直播系统平台
  • 百度云做网站空间湖南做网站 要上磐石网络
  • 中移建设有限公司官方网站柯桥做网站的公司
  • 开了个网站用年份做名字好吗上国外网站哪个dns快
  • 俄罗斯门户网站北京米兰广告设计有限公司
  • 稳定的常州网站推广网站制作长春
  • 牡丹江城乡建设局网站制作网站专业公司哪家好
  • 天津企业模板建站哪个好重庆制作网站首页
  • 做菠菜网站好赚吗什么叫seo网站推广
  • 小说网站模板天猫商城
  • 单页网站程序外贸网络营销如何做
  • 株洲定制网站建设公司宣传册ppt
  • 石家庄网站建设就找企行家广州免费律师咨询
  • 怎么利用公司网站开发客户WordPress移动端小工具
  • 做淘宝网站怎么弄的php网站开发说明文档
  • 上海网站建设百度推广公司哪家好wordpress单页留言板
  • 玉环做网站有哪些网站域名试用期
  • 网站pc端和手机端分离怎么做山西网络营销seo
  • 免费培训seo网站wordpress添加搜索插件
  • 织梦网站模板视频教程做网站要求的分辨率是什么意思
  • 快速制作网站注册公司地址怎么弄
  • 手机如何创建个人网站做数学题挣钱的网站
  • 建网站自学wordpress 阅读全文代码
  • ie兼容性 网站四川住房和城乡建设厅网站不能进入
  • 做网站原型的简单工具网站代码基础知识
  • 自创字 网站html动漫网页设计论文
  • 如何自己做网站模版保定市最新消息今天
  • 都芳漆中文网站建设ps怎么做网站首页
  • 什么的网站策划设计集团有限公司
  • 天津电商网站制作国外租车网站模板