2023-2-3 相交链表 【链表】

题目:

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

思路:

A和B两个链表长度可能不同,但是A+B和B+A的长度是相同的,所以两个节点先遍历自己再遍历对方一定是同时结束
如果A,B相交的话A和B有一段尾巴是相同的,所以两个遍历的指针一定会同时到达第一个交点
如果A,B不相交的话两个指针就会同时到达尾部,即出现null=null的情况。

实现代码如下:

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
    ListNode l1 = headA, l2 = headB;
    while (l1 != l2) {
        //如果走完自己的路,开始走对方的路
        l1 = l1 == null ? headB : l1.next;
        l2 = l2 == null ? headA : l2.next;
    }
    return l1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值