题目描述
输入两个链表,找出它们的第一个公共结点。
思路
由于在最后具有相同的节点,所以可先确定每个链表的长度,因为在最后享有公共的节点,所以将节点链表设置为一样长度,然后从此开始遍历,来确定第一个相同的节点。
/*
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 temp1,temp2;
int size1,size2;
size1=0;
size2=0;
temp1=pHead1;
temp2=pHead2;
while(temp1!=null){
temp1=temp1.next;
size1++;
}
while(temp2!=null){
temp2=temp2.next;
size2++;
}
temp1=pHead1;
temp2=pHead2;
if(size1>size2){
int num=size1-size2;
while(num>0){
temp1=temp1.next;
num--;
}
}
else{
int num=size2-size1;
while(num>0){
temp2=temp2.next;
num--;
}
}
while(temp1!=null||temp2!=null){
if(temp1==temp2)return temp1;
temp1=temp1.next;
temp2=temp2.next;
}
return null;
}
}