LeetCode Java刷题笔记—160. 相交链表

160. 相交链表

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

简单难度,这道题和剑指 Offer 52. 两个链表的第一个公共节点是同一道题。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;
}

你可能感兴趣的:(链表,leetcode,java,160.,相交链表)