代码随想录(4)链表2

 ZR_yst     2023-11-11     363     0   

欢迎来到银盒子的世界~

24

图片.png

交换节点的话,注意是两两交换1)借助头结点2)三步走,保存节点(Node1,Node2),然后分别是头结点,1指向3,2指向1,然后注意向后多少,是哪个指针调整

19

图片.png

两个指针,一快一慢,快的比慢的先走n+1个节点,然后一起走,fast走到最后,slow的next指向下一个的下一个

02.07(160 链表相交)

图片.png

先全部遍历,然后长的那个先走,直到其余长度相同,然后比较

142

图片.png

还是两个指针,一快一慢,快的走两个,慢的走一个,直到相遇,此时满足:

图片.png

快:x+n(y+z)+y

慢:x+y

又因为每次都是快一慢二,同时满足(x+ny+nz+y)=2(x+y)

整理有:ny+nz=x+y

x=(n-1)y+z

n>=1,同时不管转了多少圈,都有x=z,所以一个新的指针从头结点出发,然后慢指针同时出发,直到相遇,相遇的节点就是入口节点



一个小总结,就是链表涉及到长度不一样,要找什么相交的之类的,都是两个指针,一快一慢,至于是快的一次走两个呢,还是快的先走,到达某点后慢的再走,具体再分析,然后的翻转之类的,要考虑头结点,一般虚设头结点,然后指针调整

发表评论