题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
import java.util.*;
/*
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;
}
ListNode pHead1Temp = pHead1;
ListNode pHead2Temp = pHead2;
List<ListNode> list1 = new ArrayList<>();
List<ListNode> list2 = new ArrayList<>();
int count1 = 0;
int count2 = 0;
while (pHead1Temp != null) {
count1 += 1;
list1.add(pHead1Temp);
pHead1Temp = pHead1Temp.next;
}
while (pHead2Temp != null) {
count2 += 1;
list2.add(pHead2Temp);
pHead2Temp = pHead2Temp.next;
}
int n = 0;
if (count1 > count2) {
n = list1.size()-1;
for (int i = list2.size() - 1; i >= 0; i--) {
if (list2.get(i).val != list1.get(n).val) {
return list1.get(n).next;
}
n -= 1;
if (i == 0) {
return list2.get(0);
}
}
} else {
n = list2.size()-1;
for (int i = list1.size() - 1; i >= 0; i--) {
if (list1.get(i).val != list2.get(n).val) {
return list2.get(n).next;
}
n -= 1;
if (i == 0) {
return list1.get(0);
}
}
}
return null;
}
}
