思路:假设两个链表有环,那么双指针,一个从l1(头)遍历,一个从l2(尾)遍历,最终一定会存在一个相同的节点,返回即可;若遍历结束仍然没有,则说明没有公共节点,返回null

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        ListNode p1=pHead1,p2=pHead2;
      	//空指针判断
        if(p1==null || p2==null)return p1==null?p1:p2;
        while(p1!=null || p2!=null){
          	//p1遍历完,转向p2
            if(p1==null)p1=pHead2;
          	//p1遍历完,转向p2
            if(p2==null)p2=pHead1;
            if(p1==p2)return p1;
            p1=p1.next;
            p2=p2.next;
        }
        return p1==null?p1:p2;
    }
}