题目:输入两个链表,找出它们的第一个公共结点。
思路:本题的意思是找到第一个公共结点,该公共结点之后均为相同的结点,既有公共尾结点(本人第一次误解了意思),但是如是借助HashMap的数据结构,这方面则不用考虑,只需要遍历第一个链表,将链表的结点放入HashMap中即可,之后遍历第二条链表,在遍历第二个链表时,判断HashMap中是否包含遍历的结点,若包含则直接返回即可。具体代码实现如下所示:
import java.util.HashMap;
/*
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 curNode1=pHead1;
ListNode curNode2=pHead2;
HashMap<ListNode,Integer> map=new HashMap<>();
while(curNode1!=null){
map.put(curNode1,null);
curNode1=curNode1.next;
}
while(curNode2!=null){
if(map.containsKey(curNode2)){
return curNode2;
}
curNode2=curNode2.next;
}
return null;
}
}