输入两个链表,找出它们的第一个公共节点
解题思路
用两个指针分别指向两个头节点, 只要两个指针不相等就分别往后迭代, 走到尽头就换到另一个链表头继续迭代
当两个指针相遇时就是第一个公共节点
当两个链表没有交集时, 两个指针会同时等于null, 也会跳出循环
代码
public class Solution {
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;
}
}