两个链表的第一个公共结点
题目描述:
输入两个链表,找出它们的第一个公共结点。
/*
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 p1 = getLength(pHead1);
int p2 = getLength(pHead2);
//让大的链表先进行跑到指定位置
if(p1>p2){
for(int i = 0 ;i < p1-p2;i++){
pHead1 = pHead1.next;
}
}else{
for(int i = 0 ;i < p2-p1;i++){
pHead2 = pHead1.next;
}
}
//判断相同节点的链表是否具有相同的值
while(true){
if(pHead1==null||pHead2==null){
return null;
}
if(pHead1==pHead2){
return pHead1;
}
else{
pHead1 = pHead1.next;
pHead2 = pHead2.next;
}
}
}
//获取链表长度。
private int getLength(ListNode pHead){
int sum = 0;
while(pHead!=null){
sum++;
pHead = pHead.next;
}
return sum;
}
}