力扣---找到两个链表的交点

问题:给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点,如果两个链表不存在相交节点,返回null。

解题思路:

1、首先我们求出两个链表的表长和长度差n

2、我们再找到较长链表的第n个节点

3、从较长链表第n个节点和较短链表的第一个节点等速遍及

4、如果存在相交节点则找到,如果遍历到最后一个节点都没有找到则没有相交节点。

代码实现

getSameNode(ListNode headA, ListNode headB){

pA = headA;

pB = headB;

int lA = len(pA);

int lB = len(pB);

n = (lA > lB) ? lA - lB : lB - lA;

if(lA > lB){

        while(n>0){

               pA = pA.next;

                n--;

        }

}else{

        while(n>0){

               pB = pB.next;

                n--;

        }

}

while(pA != null && pB != null){

        if(pA == pB) return pA;

        pA = pA.next;

       pB = pB.next;

}

return null;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值