160.回文链表(javascript)160.IntersectionofTwoLinkedLists

原创
小哥 3年前 (2022-11-10) 阅读数 6 #大杂烩

为您提供两个单个链接列表的头部节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链接列表没有相交节点,则返回 null 。

图2节点处的链接列表。 c1 开始相交:

题目数据 保证 整个链条结构中没有环。

请注意,函数返回结果后,链表必须 保持其原始结构 。

自定义评估:

评测系统 输入如下(您设计的程序 不适用 此输入):

  • intersectVal - 相交的起始节点的值。如果不存在相交节点,则该值为 0
  • listA - 第一个链接列表
  • listB - 第二个链接列表
  • skipA - 在 listA 跳到交叉节点的节点数(从起始节点开始)。
  • skipB - 在 listB 跳到交叉节点的节点数(从起始节点开始)。

评估系统将根据这些输入创建一个链数据结构,并将有两个头部节点。 headA 和 headB 程序传给了你。如果程序正确返回相交节点,您的解决方案将是 作为正确答案 。

第一步:首先headA遍历时,所有节点都存在。map中
第二步:对headB遍历,当节点出现在map返回当前节点;null

/**
 * @param {ListNode} headA
 * @param {ListNode} headB
 * @return {ListNode}
 */
var getIntersectionNode = function (headA, headB) {
    let h = new Map()
    while (headA != null) {
        if (!h.has(headA)) {
            h.set(headA)
        }
        headA=headA.next
    }
    while (headB != null) {
        if (h.has(headB)) {
            return headB
        }
        headB=headB.next
    }
    return null
};
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除