输入两个链表,找出它们的第一个公共结点。
import java.util.HashMap;
public class Test36 {
public static ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
ListNode p1 = pHead1;
ListNode p2 = pHead2;
while (p1 != p2) {
p1 = (p1 != null ? p1.next : pHead2);
p2 = (p2 != null ? p2.next : pHead1);
}
return p1;
}
public static ListNode FindFirstCommonNode2(ListNode pHead1, ListNode pHead2) {
HashMap<ListNode,Integer> hashMap=new HashMap<>();
while (pHead1!=null){
hashMap.put(pHead1,1);
pHead1=pHead1.next;
}
while (pHead2!=null){
if(hashMap.containsKey(pHead2)){
return pHead2;
}
pHead2=pHead2.next;
}
return null;
}
public static void main(String[] args) {
ListNode A=new ListNode(1);
ListNode B=new ListNode(2);
ListNode C=new ListNode(3);
ListNode D=new ListNode(4);
A.next=B;
B.next=C;
D.next=C;
System.out.println(FindFirstCommonNode(A,D).val);
}
}