通过两次交换,实现对其链表,进行逐一比对。如果没有找到,则同时为null,跳出循环。
起始状态:
第一次为null:
第一次交换:
第二次为null:
第二次交换,对其链表:
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode a = headA;
ListNode b = headB;
while (a != b) {
a = a == null ? headB : a.next;
b = b == null ? headA : b.next;
}
return a;
}
public ListNode getIntersectionNode1(ListNode headA, ListNode headB) {
ListNode a = headA;
ListNode b = headB;
while (a != b) {
if (a == null) {
a = headB;
} else {
a = a.next;
}
if (b == null) {
b = headA;
} else {
b = b.next;
}
}
return a;
}