题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
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; } }