美文网首页
(链表)力扣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

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

  • 算法

    排序:排序链表:iOS单向链表数据结构、判断两个链表是否相交并找出交点求解1-100之间的所有素数/质数:http...

  • 常见的算法题

    一、找两个链表的交点 存在集中特殊情况: 1、链表长度相同且没交点 2、链表长度相同有交点 3、长度不同有交点(最...

  • 力扣题解(链表)

    2. 两数相加

  • 算法 - 链表实现(OC) 及简单的链表算法

    链表实现 打印链表 链表反转 (使用递归法) 两个有序链表合并为一个有序链表 力扣题[https://leetco...

  • 链表相交问题

    判断两个单向链表是否相交,并找出他们的交点。这个问题我们分三种情况讨论: 一. 两个链表都不存在环 问题思路: ...

  • 面试题52_两个链表的第一个公共节点

    题目描述 输入两个链表,找出它们的第一个公共结点。 题解 本题可以将两个链表的节点存放在两个栈中,这样两个链表的尾...

  • 求两个链表的交点

    已知链表A的头节点指针headA,链表B的头节点指针headB,两个链表相交,求两链表交点对应的节点。[](Lee...

  • 2.求两个链表的交点

    已知链表A的头结点指针headA,链表B的头结点指针headB,两个链表相交,求两链表交点对应的节点。 注意: 如...

  • (链表)链表第一个公共结点

    题目描述输入两个链表,找出它们的第一个公共结点。 思路两个链表如果有交点,那么只有两种情况1.呈"Y"字形,重复后...

网友评论

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

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