输入两个链表,找出它们的第一个公共结点。
思路分析:
先分别统计出两个链表的长度;然后,计算两个链表的长度差,让长的先走,然后一起走,若出现相同的节点,则直接返回;反之,没有相同的节点。
/*
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;
int count1=0;
int count2=0;
ListNode p1=pHead1;
ListNode p2=pHead2;
while(p1!=null){
p1=p1.next;
count1++;
}
while(p2!=null){
p2=p2.next;
count2++;
}
int flag=count1-count2;
if(flag>0){
while(flag>0){
pHead1=pHead1.next;
flag--;
}
while(pHead1!=pHead2){
pHead1=pHead1.next;
pHead2=pHead2.next;
}
return pHead1;
}
if(flag<=0){
while(flag<0){
pHead2=pHead2.next;
flag++;
}
while(pHead1!=pHead2){
pHead1=pHead1.next;
pHead2=pHead2.next;
}
return pHead1;
}
return null;
}
}