判断两个链表是否相交
题目描述
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
链表
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
解决方案
一:使用HashSet的元素不重复性
遍历第一条链表,将第一个链表的所有数据全部都保存到
HashSet中,然后在遍历另一条链表,每一次遍历元素的过
程中,都使用hash的contains方法判断是否与之前的重复
优点:利用了set的不可重复性,容易思考到
缺点:时间复杂度为O(m + n)
代码如下所示
public ListNode getIntersectionNode(