思路
- Hash 查找就用Hash,显而易见
- 两个链表相交,链表是单向的,所以两个链表是汇聚的,两条小河汇聚成一条河,求汇聚点。这样有又分两种:
- 第一种思路转换问题,让一个链表与它的尾部相连,这就转换成了一个带有循环链表的入口问题,后面有这样的题,暂时不提。
- 另一种思路是求差,也就是找到同步点,求到差div之后,长的链表先走div步,然后开始同步走。
代码
import java.util.*;
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
Set<ListNode> set=new HashSet<>();
while(pHead1!=null){
set.add(pHead1);
pHead1=pHead1.next;
}
while(pHead2!=null){
if(set.contains(pHead2)){
return pHead2;
}
pHead2=pHead2.next;
}
return null;
}
} 
京公网安备 11010502036488号