题目描述
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
HashMap<Integer, ListNode> map = new HashMap<>();
while (pHead1 != null) {
map.put(pHead1.val, pHead1);
pHead1 = pHead1.next;
}
while (pHead2 != null) {
if (map.containsKey(pHead2.val)) {
return pHead2;
}
pHead2 = pHead2.next;
}
return null;
}
测试程序:
public static void main(String[] args) {
Solution solution = new Solution();
ListNode head1 = new ListNode(1);
ListNode head2 = new ListNode(2);
ListNode head3 = new ListNode(3);
ListNode head4 = new ListNode(4);
ListNode head5 = new ListNode(5);
head1.next = head2;
head2.next = head3;
head3.next = head4;
head4.next = head5;
ListNode head21 = new ListNode(21);
ListNode head22 = new ListNode(22);
head21.next = head22;
head22.next = head3;
ListNode listNode = solution.FindFirstCommonNode(head1, head21);
System.out.println(listNode.val);
}
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
HashMap<Integer, ListNode> map = new HashMap<>();
while (pHead1 != null) {
map.put(pHead1.val, pHead1);
pHead1 = pHead1.next;
}
while (pHead2 != null) {
if (map.containsKey(pHead2.val)) {
return pHead2;
}
pHead2 = pHead2.next;
}
return null;
}