题目:输入两个链表,找出它们的第一个公共结点。
public class FindFirstCommonNode1 {
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
if(pHead1==pHead2){
return pHead1;
}
ListNode p=null;
int l1=length(pHead1);
int l2=length(pHead2);
if(l1>l2){
for(int i=0;i<l1-l2;i++){
pHead1=pHead1.next;
}
}else{
pHead2=pHead2.next;
}
boolean f=true;
while(f){
if(pHead1==null||pHead2==null){
return null;
}
if(pHead1==pHead2){
p=pHead1;
f=false;
}else{
pHead1=pHead1.next;
pHead2=pHead2.next;
}
}
return p;
}
public int length(ListNode pHead1) {
int count=0;
while(pHead1!=null){
count++;
pHead1=pHead1.next;
}
return count;
}
}
此外还可以使用HashMap
感谢:https://blog.csdn.net/u014282557/article/details/72885001/