输入两个链表,找出它们的第一个公共节点。
剑指 Offer 52. 两个链表的第一个公共节点 - 力扣(LeetCode) (leetcode-cn.com)
先让指针a指向链表A,指针b指向链表B,同时向后走,假设指针a走到链表末尾,就让它指向链表B,指针b走到末尾时就指向指针A,这样两个指针就能同时走完两条链表。如果两指针相遇,说明走到了公共节点,或者是同时走到链表尾。
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if(headA == null || headB == null){
return null;
}
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;
}
}