E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
LeetCode-并查集
AcWing:
并查集
并查集
理论基础
并查集
的作用是什么:将两个集合合并。询问两个元素是否在一个集合当中。
clementines_
·
2024-01-09 17:17
c++
算法
数据结构
AcWing 836.合并集合(
并查集
)
题目(
并查集
好像面试挺爱考的,代码短还有思维)思路if(p[a]!
少女的英雄梦312
·
2024-01-09 17:15
练习题
合并集合(
并查集
)
思路
并查集
可以判断连通块的数量,可以判断集合的大小。
做一只大熊猫
·
2024-01-09 17:45
#
并查子集
图论
算法
java
并查集
(ACWING三道题)
1.适用题型在我个人理解,
并查集
是用于解决这样的问题:题目中的数据分多个集合,并且有合并的可能,有时需要查找两个元素是不是在同一集合,以及该集合中所有元素的数量。
阳光.
·
2024-01-09 17:45
算法打怪升级之路
图论
c++
数据结构
AcWing |【
并查集
】合并集合
题目内容一共有n个数,编号是1~n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:“Mab”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;“Qab”,询问编号为a和b的两个数是否在同一个集合中;输入格式第一行输入整数n和m。接下来m行,每行包含一个操作指令,指令为“Mab”或“Qab”中的一种。输出格式对于每个询问指令”Qab”,都要输出一
Leonadoice
·
2024-01-09 17:15
算法训练营
AcWing |【
并查集
】食物链
题目内容动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是”1XY”,表示X和Y是同类。第二种说法是”2XY”,表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,
Leonadoice
·
2024-01-09 17:15
算法训练营
acwing算法基础课:
并查集
并查集
模板作用:1.将两个集合合并2.询问两个元素是否在同一个集合中近乎O(1)时间复杂度完成上述操作基本原理:每个集合用一棵树表示,树根的编号就是整个集合的编号。
墨染&殇泪
·
2024-01-09 17:14
acwing
#
数据结构
算法
合并集合(
并查集
)
作用:高效的合并两个集合和查询两个元素是否在同一个集合,时间复杂度近O(1);原理:每个集合用一颗树来表示,树根的编号就是整个集合的编号,每个节点存储他的父节点。#includeusingnamespacestd;constintN=100010;intp[N];intfindd(intx){while(p[x]!=x){x=p[x];}returnx;}intmain(){ios::sync_w
秘制函数
·
2024-01-09 17:44
数据结构
算法
c++
数据结构
银河英雄传说 acwing-238
并查集
题面链接:238.银河英雄传说-AcWing题库题面:思路:
并查集
,如果没有求两艘战舰之间的战舰数量,这就是一题很简单的
并查集
但是这题需要计算两艘战舰之间的数量,我们就需要维护一个d数组,保存的是当前战舰到战舰头的距离
Evil_boy__
·
2024-01-09 17:14
c++
数据结构
并查集
Acwing
并查集
学习记录
思路:当形成闭环的时候游戏结束,所以添加最后一边时,应满足该边的两端在同一个联通块中,所以可用
并查集
,判断两点的祖宗节点是否相同。
haniwn
·
2024-01-09 17:13
笔记
算法
AcWing-
并查集
-合并路径
文章目录
并查集
acwing-836合并路径
并查集
将两个集合合并询问两个元素是否在一个集合当中O(1)近乎O(1)基本原理:每个集合用一棵树来表示,树根的编号就是整个集合的编号。
superkcl2022
·
2024-01-09 17:13
#
AcWing
算法
数据结构
AcWing 算法基础
并查集
并查集
并查集
解决的问题将两个集合合并询问两个元素是否在一个集合中基本原理用树的形式来维护每个集合,树根的编号就是整个集合的编号,每个节点存储他的父节点,p[x]表示x的父节点问题1,如何判断树根:if(
mu6y
·
2024-01-09 17:40
算法
算法
数据结构
算法学习周记4(acwing
并查集
、二分)
acwing——836合并并查一共有nn个数,编号是1∼n1∼n,最开始每个数各自在一个集合中。现在要进行mm个操作,操作共有两种:Mab,将编号为aa和bb的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;Qab,询问编号为aa和bb的两个数是否在同一个集合中;输入格式第一行输入整数nn和mm。接下来mm行,每行包含一个操作指令,指令为Mab或Qab中的一种。输出格式对于每个
whisper_cxl
·
2024-01-09 17:10
算法
学习
acwing
并查集
目录
并查集
的路径压缩两种方法法一法二AcWing240.食物链AcWing837.连通块中点的数量示例
并查集
自写
并查集
并查集
的路径压缩两种方法法一沿着路径查询过程中,将非根节点的值都更新为最后查到的根节点
honortech
·
2024-01-09 17:08
数据结构
c++
算法
408重要数据结构+算法汇总——C语言手搓版(全)
目录:线性表链表栈队列链栈链队二叉树线索二叉树堆堆排序
并查集
(quickfind、quickunion、w-qickunion、路径压缩)AVL树红黑树B树拓
一碗姜汤
·
2024-01-09 12:46
cs算法数据结构
算法
数据结构
c语言
并查集
算法
并查集
算法参考文档:https://baike.baidu.com/item/%E5%B9%B6%E6%9F%A5%E9%9B%86/9388442?
烟波灼灼
·
2024-01-08 17:25
LeetCode-
重复的子字符串(459)
题目描述:给定一个非空的字符串s,检查是否可以通过由它的一个子串重复多次构成。思路一:使用枚举的方法。首先因为字符串s有一个子串重复多次构成,那么s的长度len与子串的长度subLen应该成倍数关系,并且在s中索引为i的字符应该与索引为i+subLen的字符相等。根据这些我们可以首先设置一个循环对从1到len/2的子串长度进行处理(因为子串至少重复一次所以最大长度为len/2),接着判断子串长度是
炙热的大叔
·
2024-01-08 11:51
leetcode
算法
LeetCode-
移动零(283)
题目描述:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。思路:这里的思路跟以前做过的去重复数字的思路有点像,快指针也就是for循环中的i遍历元素,慢指针也就是count指向存储元素得到位置,当然只有当遍历的数字不是0的时候才会存储该数字至count指向的位置,并且count+1。完成存储的for循环之后,
炙热的大叔
·
2024-01-08 11:51
leetcode
算法
数据结构
LeetCode-
加一(66)
题目描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。思路:这里主要分三种情况,第一种全是9就要扩大数字尺寸然后0位置为1其他位置值为0,第二种情况末尾位置数字小于9,直接将末尾位置数字加一即可,第三种可能尾部出现连续的9,同理尾部置0,直至倒数最后一个9的位置,并且在此
炙热的大叔
·
2024-01-08 11:20
leetcode
算法
数据结构
LeetCode-
合并两个有序链表
题目链接=>戳这里题目截图解法/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(intx){val=x;}*}*/classSolution{publicListNodemergeTwoLists(ListNodel1,ListNodel2){ListNodemergeLi
沙漠小舟
·
2024-01-07 22:32
C++中使用vector保存新建对象中自指指针的问题
问题在某些场景中(例如
并查集
),我们需要将新建对象中的指针指向对象自己。
A11en3
·
2024-01-07 21:17
C++Primer
内存管理
c++
算法
开发语言
leetcode-
双指针
leetcode-
双指针双指针1、有序数组-题号167两数之和2、两数平方和-题号6333、反转字符串中的元音字符-题号3454、验证回文字符串-题号6805、合并两个有序数组-题号886、环形链表-题目
Kuches
·
2024-01-07 19:24
leetcode
c++
LeetCode-
数组-双指针-中等难度
文章目录双指针1.删除有序数组中的重复项(入门)1.1题目描述1.2解题思路1.3代码实现2.删除有序数组中的重复项II(简单)2.1题目描述2.2解题思路2.3代码实现3.移动零(简单)3.1题目描述3.2代码实现4.两数之和(入门)4.1题目描述4.2解题思路4.3代码实现5.盛水最多的容器(中等)5.1题目描述5.2解题思路5.3代码实现6.三数之和(中等)6.1题目描述6.2解题思路6.3
码拉松
·
2024-01-07 16:45
Leetcode
leetcode
算法
leetcode-
字母异位词
241-有效的字母异位词给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。核心思路:用哈希表或数组来记录每个字符出现的次数,并一一进行比较。方法一:数组boolisAnagram(strings,stringt){if(s.size()!=t.size())returnfalse;intnum[128];//ASCA
Emperorist
·
2024-01-07 13:55
哈希表
数组
leetcode
算法
LeetCode-
整数反转(7)
题目描述:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围[−231,231−1],就返回0。假设环境不允许存储64位整数(有符号或无符号)。思路:题目首先要求要对整数进行反转,那么我们可以使用一个while循环即可完成操作,每次循环使用一个变量接收整数模10的运算结果,然后使用一个变量来接收反转的结果,因为我们已经有模10的结果了,那么只
炙热的大叔
·
2024-01-07 13:24
leetcode
算法
Leetcode-
有效的字母异位词C++实现
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。哈希表实现:classSolution{public:boolisAnagram(strings,stringt){unordered_mapmap;if(s.size()!=t.size())returnfalse;for(inti=0;i::iteratorit=
Vanderbiol
·
2024-01-07 13:23
leetcode
算法
职场和发展
LeetCode-
有效的字母异位词(242)
题目描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。思路:这题还是比较简单的,首先将两个字符串转为两个字符数组,之后对两个数组分别排序,最终返回两个数组是否相等的判断结果即可。能这么做是因为s、t异位的话排序之后是相等的,如果不符合异位,那么排序之后是不等的。代码:classSolution{publicbo
炙热的大叔
·
2024-01-07 13:53
leetcode
算法
LeetCode-
最长子序列
/***@authorwx*@description最长子序列*@create2023/12/26**/publicclassLongestConsecutive{publicstaticvoidmain(String[]args){int[]arr=newint[]{100,4,200,1,3,2};intresult=longestConsecutive(arr);System.out.pri
xinCode79
·
2024-01-07 05:42
数据结构和算法
leetcode
java
算法
LeetCode-
杨辉三角公式
杨辉三角公式![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a225ff66061e4076924e3299b81b98d5.png/***@authorwx*@description杨辉三角公式-标准*@create2023/12/26**/publicclassTriangle{publicstaticvoidmain(String[]args)
xinCode79
·
2024-01-07 05:11
数据结构和算法
leetcode
算法
最小生成树kruskal算法matlab,最小生成树 Kruskal算法
不难看出,我们需要使用
并查集
。由于每次选择最小边,所以需要对所有边进行排序,设计
土豆土豆我马铃薯
·
2024-01-06 16:14
【洛谷1661 扩散】二分答案 |
并查集
| 最小生成树 | E
谨以此题纪念我的第一次正式二分答案~洛谷【P1661】扩散时空限制1000ms/128MB698通过1.7K提交Tags:二分答案最小生成树
并查集
题目描述一个点每过一个单位时间就会向四个方向扩散一个距离
Keyu Tian
·
2024-01-06 16:13
L
洛谷
B
并查集
E
二分答案
Z
最小生成树
洛谷
二分答案
并查集
最小生成树
LeetCode-
无重复字符的最长子串(3)
题目描述:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。代码:classSolution{publicintlengthOfLongestSubstring(Strings){Setocc=newHashSet();intlen=s.length();intrk=0,ans=0;for(inti=0;i
炙热的大叔
·
2024-01-06 00:58
leetcode
算法
除数博弈
++){if(N%i==0){N=N-i;count++;break;}}}if(count%2==1)returntrue;elsereturnfalse;}};运行结果:原题链接:https://
leetcode
WAI_f
·
2024-01-05 10:41
常见的
并查集
题目
总结
并查集
逻辑实现的优化有两种,第一种是查找时路径压缩,第二种是按秩合并,合并时将高度较小的树作为较高树的子树,从代码量来看,推荐使用路径压缩,可以参考lc547.省份数量的两种UnionFind写法题目
xxx_520s
·
2024-01-05 07:00
数据结构
算法
数据结构
leetcode-
链表
总结:主要是迭代(遍历)和递归。迭代遍历的话一般可能用的多的是双指针,快慢指针,三指针(pre,cur,next)这些,最好画图理清链表节点next域的指向要如何修改,相交链表、环这种问题适合尝试双指针。因为链表的遍历查询只能从头节点一次向后遍历,所以检索的效率不高,这时时间复杂度为O(1)的哈希表可以发挥作用。递归的话则是将问题拆成小问题了,主要时考虑清楚每一个节点是如何处理的,最好也是画图分析
weixin_43852091
·
2024-01-04 23:42
leetcode
链表
leetcode
数据结构
算法(21)-
leetcode-
剑指offer5
leetcode-
剑指offer-443.面试题43-1~n整数中1出现的次数44.面试题44-数字序列中某一位的数字45.面试题45-把数组排成最小的数-快排变种46.面试题46-把数字翻译成字符串47
小陈同学-陈百万
·
2024-01-04 23:11
算法题
【
LeetCode-
剑指offer】-- 24.反转链表
24.反转链表/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode(intval,ListNodenext){this.val=val;this.next=next;}*}*/classS
小d<>
·
2024-01-04 23:10
#
剑指offer
leetcode
算法
【
LeetCode-
剑指offer】-- 21.删除链表的倒数第N个结点
21.删除链表的倒数第N个结点方法:计算链表长度/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode(intval,ListNodenext){this.val=val;this.next
小d<>
·
2024-01-04 23:10
#
剑指offer
leetcode
算法
【
LeetCode-
剑指offer】--19.验证回文串II
19.验证回文串II方法:双指针首先考虑如果不允许删除字符,如何判断一个字符串是否是回文串。常见的做法是使用双指针。定义左右指针,初始时分别指向字符串的第一个字符和最后一个字符,每次判断左右指针指向的字符是否相同,如果不相同,则不是回文串;如果相同,则将左右指针都往中间移动一位,直到左右指针相遇,则字符串是回文串在允许最多删除一个字符的情况下,同样可以使用双指针,通过贪心实现。初始化两个指针low
小d<>
·
2024-01-04 23:40
#
剑指offer
leetcode
算法
【Golang】
LeetCode-
剑指Offer-面试题52-两个链表的第一个公共节点【两种解法】
题目输入两个链表,找出它们的第一个公共节点。公共节点不是指节点的值相同,而是两条链中的节点在同一个内存地址。如下面的两个链表:在节点c1开始相交。示例1:输入:intersectVal=8,listA=[4,1,8,4,5],listB=[5,0,1,8,4,5],skipA=2,skipB=3输出:Referenceofthenodewithvalue=8输入解释:相交节点的值为8(注意,如果两
士多啤梨先生
·
2024-01-04 23:39
LeetCode力扣个人题解
链表
leetcode
go
golang
面试
LeetCode-
剑指 Offer 题目集
19、20、28、33、34、36、37、38、38、43VS44、47、48、53-II、54、55-II、57-II、59-II、63、68-II题号题目题解链接标签备注遍数03数组中重复的数字【
LeetCode
白露塞纳
·
2024-01-04 23:35
单例模式
java
开发语言
leetcode-
剑指 Offer 52. 两个链表的第一个公共节点
leetcode-
剑指Offer52.两个链表的第一个公共节点输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点c1开始相交。
ITAK_fans
·
2024-01-04 23:35
剑指offer
链表
指针
LeetCode-
剑指 Offer 52-两个链表的第一个公共节点
剑指Offer52.两个链表的第一个公共节点题目说明输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点c1开始相交。示例示例1:输入:intersectVal=8,listA=[4,1,8,4,5],listB=[5,0,1,8,4,5],skipA=2,skipB=3输出:Referenceofthenodewithvalue=8输入解释:相交节点的值为8(注意,如果两个列表相交则
LQZme
·
2024-01-04 23:35
LeetCode
剑指Offer
链表
【
LeetCode-
剑指offer】-- 23.相交链表
23.相交链表方法一:哈希集合/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(intx){*val=x;*next=null;*}*}*/publicclassSolution{publicListNodegetIntersectionNode(ListNodeheadA
小d<>
·
2024-01-04 23:04
#
剑指offer
leetcode
链表
算法
【
LeetCode-
剑指offer】-- 13.二维区域和检索-矩阵不可变
13.二维区域和检索-矩阵不可变方法:一维前缀和初始化时对矩阵的每一行计算前缀和,检索时对二维区域中的每一行计算子数组和,然后对每一行的子数组和计算总和。具体实现方面,创建m行n+1列的二维数组sums,其中m和n分别是矩阵matrix的行数和列数,sums[i]为matrix[i]的前缀和数组。将sums的列数设为n+1的目的是为了方便计算每一行的子数组和,不需要对col1=0的情况特殊处理。c
小d<>
·
2024-01-04 07:18
#
剑指offer
leetcode
算法
Leetcode-
递归
文章目录q21合并两个有序链表q101对称二叉树q104二叉树的最大深度q226翻转二叉树q236二叉树的最近公共祖先剑指Offer10-I.斐波那契数列剑指Offer10-II.青蛙跳台阶问题q21合并两个有序链表题目传送门题解可以使用递归和迭代两种方法进行求解,两种方法都比较简单。递归:funcmergeTwoLists(l1*ListNode,l2*ListNode)*ListNode{if
jenrain
·
2024-01-04 05:39
LeetCode
leetcode
每天一题
LeetCode-
Longest Substring Without Repeating Characters
Givenastring,findthelengthofthelongestsubstringwithoutrepeatingcharacters.Example1:Input:"abcabcbb"Output:3Explanation:Theansweris"abc",withthelengthof3.Example2:Input:"bbbbb"Output:1Explanation:Thean
autisticBoy
·
2024-01-04 03:56
leetcode-
我的日程安排表 II
实现一个MyCalendar类来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。MyCalendar有一个book(intstart,intend)方法。它意味着在start到end时间内增加一个日程安排,注意,这里的时间是半开区间,即[start,end),实数x的范围为,startcalendar;Listoverlaps;MyCalendarTwo(){c
程序员小2
·
2024-01-03 19:17
【
LeetCode-
剑指offer】--16.无重复字符的最长子串
16.无重复字符的最长子串方法:滑动窗口classSolution{publicintlengthOfLongestSubstring(Strings){intn=s.length();Setset=newHashSet<>();intl=0,ans=0;for(inti=0;i
小d<>
·
2024-01-03 18:36
#
剑指offer
leetcode
算法
【
LeetCode-
剑指offer】--15.找到字符串中所有字母异位词
15.找到字符串中所有字母异位词方法:滑动窗口classSolution{publicListfindAnagrams(Strings,Stringp){Listans=newArrayListm){returnans;}int[]cnt1=newint[26];int[]cnt2=newint[26];for(inti=0;i
小d<>
·
2024-01-03 18:06
#
剑指offer
leetcode
算法
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他