判断链表相交

该博客探讨了如何判断两个链表是否相交,包括入环点相同和不同的情况。介绍了通过获取链表长度,使它们同步移动来寻找相交节点的方法,并详细阐述了有环链表相交的各种情形及解决策略。
摘要由CSDN通过智能技术生成

题目

给定两个链表,判断是否相交

总述:

1. 找到两个链表各自的入环点node1和node2
2. 如果node1和node2有一个为空,另一个不为空,则两个链表不可能相交
3. 如果node1和node2都等于空,说明两个链表都无环,则可以利用判断两个无环链表求取第一个相交点的方法求取
4. 如果node1和node2都不为空,说明两个链表都有环,需要分情况讨论
  • 入环点相同且是第一个相交的结点
  • 入环点相同且不是第一个相交的结点
  • 入环点不同,如果一个入环点在回到自身的过程中遇到了另外一个链表的入环点则相交,否则不想交。相交的情况下可以返回任意一个入环点作为第一个相交点
1、两个链表都没有环,判断相交(链表的相交指的是地址相同,不是结点中的对象相等)
两个无环链表相交则两个链表的最后一个结点必定相等

/**
 * 现在有两个无环单链表,若两个链表的长度分别为m和n,
 * 请设计一个时间复杂度为O(n + m),额外空间复杂度为O(1)的算法,判断这两个链表是否相交。
 * 给定两个链表的头结点headA和headB,请返回一个bool值,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值