import java.util.*;
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        if (pHead1 == null || pHead2 == null) {
            return null;
        }
        //使用两个指针A和B,A从链表1开始,B从链表2开始
        //如果走到了终点,则A从B的头节点开始,B从A的头节点开始
        //一旦A=B,则说明找到了第一个公共节点
        //需要注意,只能赋值一次
        ListNode nodeA = pHead1;
        ListNode nodeB = pHead2;
        int count = 0;
        while (nodeA != null && nodeB != null) {
            if (nodeA.val == nodeB.val) {
                return nodeA;
            }
            nodeA = nodeA.next;
            nodeB = nodeB.next;
            if (nodeA == null && count < 2) {
                nodeA = pHead2;
                count++;
            }
            if (nodeB == null && count < 2) {
                nodeB = pHead1;
                count++;
            }
        }
        return null;

    }
}