如何判断两个无环链表是否相交

本文介绍如何判断两个无环链表是否相交。通过计算两个链表的长度,确定相交节点,如果不相交则返回null。详细步骤包括:分别找到两个链表的末尾节点和长度,比较末尾节点是否相同,然后让较短的链表先走长度差,之后同步行走直至找到相交节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何判断两个无环链表是否相交

问题

​ 如何判断两个无环链表是否相交,相交则返回第一个相交节点,不相交返回null。

思路

​ 如果两个无环链表相交,那么从相交节点开始,一直到两个链表终止的这段,二者共享。具体如下:

​ 1.链表1从头节点开始,走到最后一个节点,统计链表1的长度记为len1,同时记录链表1的最后一个节点记为end1。

​ 2.链表2从头节点开始,走到最后一个节点,统计链表2的长度记为len2,同时记录链表2的最后一个节点记为end2。

​ 3.如果end1 != end2,说明二者不相交,返回null。否则,进入步骤4。

​ 4.如果链表1比较长,链表1就先走len1-len2步;如果链表2比较长,链表2先走len2-len1步。然后两者一起走。走的过程中,两个链表第一次走到一起的那个节点,就是第一个相交的节点。

代码

public Node noLoop(Node head1, Node head2){
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值