题目
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
思路
一道题目很难理解的 “语文题”
思路就是:
设链表A私有部分为a,公有部分为c
链表B私有部分为b,公有部分为c
若相交:a+c+b =b+c+a
若不相交:a+b =b+a, 此时最终h1、h2都会指向NULL。
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode h1 = headA, h2 = headB;
while (h1 != h2) {
h1 = h1 == null ? headB : h1.next;
h2 = h2 == null ? headA : h2.next;
}
return h1;
}