一.利用哈希集合
先将其中一个链表添加到HashSet中,
再利用contains方法查询是否有相同的结点,如果有,说明相交,没有,就证明平行
缺点就是慢
public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {
HashSet<ListNode> setAb = new HashSet<ListNode>();
ListNode temp = headA;
while(temp != null) {
setAb.add(temp);
temp = temp.next;
}
temp = headB;
while(temp != null) {
if(setAb.contains(temp)) {
return temp;
}else {
temp = temp.next;
}
}
System.out.println("a");
return null;
}
二.利用双指针 链表的特性
详见