两个链表的第一个公共节点
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?tpId=196&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey
//如果两个链表长度相同,直接遍历即可;
//长度不同,如链表1长度len1,链表2长度为len2,len1>len2,如下所示p1节点从链表1的第len1-len2+1个节点,链表2从链表头开始遍历,此时两个链表遍历长度相等。
同时考虑没有公共节点的情况。
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { if(pHead1==null || pHead2== null) return null; ListNode l1 = pHead1; ListNode l2 = pHead2; while(l1!=l2){ l1 = l1.next; l2 = l2.next; if(l1==null && l2==null) return null;//同时注意在没有公共节点的时候,进行判别,否则出现死循环; if(l1==null){ l1 = pHead2; } if(l2==null){ l2 = pHead1; } } return l1; }