LeetCode-160. 相交链表

56 阅读1分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情

1. 描述

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

图示两个链表在节点 c1 开始相交

2. 示例

示例 1

8

示例 2

2

3. 答案

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        Set<ListNode> set = new HashSet<>();
        while(headA != null) {
            set.add(headA);
            headA = headA.next;
        }
        while(headB != null) {
            if (!set.add(headB)) {
                return headB;
            }
            headB = headB.next;
        }
        return null;
    }
}
  • 标签:哈希表
  • 主要思想:哈希表去重
  • 时间复杂度:O(m + n)
  • 空间复杂度:O(max(m, n))

LeetCode:160. 相交链表