Blog.

链表相交

Cover Image for 链表相交
Bernie
Bernie

203. 链表相交

leetcode 链接

思路:

  1. 用 map 存储 headA 的节点
  2. 遍历 headB,如果 map 中存在 headB 的节点,则返回 headB
  3. 遍历完 headB 仍未返回,则返回 null

typescript 解法

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */

/**
 * @param {ListNode} headA
 * @param {ListNode} headB
 * @return {ListNode}
 */
var getIntersectionNode = function (headA, headB) {
  let map1 = new Map();
  while (headA) {
    map1.set(headA, true);
    headA = headA.next;
  }
  while (headB) {
    if (map1.get(headB)) {
      return headB;
    }
    headB = headB.next;
  }
  return null;
};

go 解法

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func getIntersectionNode(headA, headB *ListNode) *ListNode {
    map1 := make(map[*ListNode]bool)
    for headA != nil {
        map1[headA] = true
        headA = headA.Next
    }
    for headB != nil{
        if map1[headB] {
            return headB
        }
        headB = headB.Next
    }
    return nil
}