思路:假设两个链表有环,那么双指针,一个从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;
}
}