美文网首页
(链表)力扣160题解: 找出两个链表的交点—TypeScri

(链表)力扣160题解: 找出两个链表的交点—TypeScri

作者: wxyzcctn | 来源:发表于2021-03-25 20:09 被阅读0次
    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     val: number
     *     next: ListNode | null
     *     constructor(val?: number, next?: ListNode | null) {
     *         this.val = (val===undefined ? 0 : val)
     *         this.next = (next===undefined ? null : next)
     *     }
     * }
     */
    
    function getIntersectionNode(headA: ListNode | null, headB: ListNode | null): ListNode | null {
        let l1 = headA;
        let l2 = headB;
        while( l1 !== l2 ){
            l1 = l1 === null ? headB : l1.next;
            l2 = l2 === null ? headA : l2.next;
        }
        return l1;
    };
    
    

    说明

    • 情况1:对于没有交点的两个链表而言,经过一次循环之后l1和l2都变为了null,此时循环结束,表明没有节点

    headA: 2-6-4
    l1: 2-6-4 + 1-5
    l2: 1-5 + 2-6-4
    headB: 1-5

    • 情况2:有公共节点时,由于l1和l2相加的长度和l2和l1相加的长度相同,经过一次循环之后,最终会再相交节点处相遇

    headA: 4-1-8-4-5
    l1: 4-1-8-4-5 + 5-0-1-[8-4-5]
    l2: 5-0-1-8-4-5 + 4-1-[8-4-5]
    headB: 5-0-1-8-4-5

    • 情况3:仅有一个节点的val相等时,此时由于该节点的next值不相等,此时不存在相交节点

    headA: 4-1-8-3-7
    l1: 4-1-8-3-7 + 5-0-1-[8]-4-5
    l2: 5-0-1-8-4-5 + 4-1-[8]-3-7
    headB: 5-0-1-8-4-5

    这种方法可以类推到找数组中的相同子数组

    相关文章

      网友评论

          本文标题:(链表)力扣160题解: 找出两个链表的交点—TypeScri

          本文链接:https://www.haomeiwen.com/subject/oavrhltx.html