剑指offer-36-求两个链表汇聚点

两个链表的第一个公共结点

http://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46

思路

  • 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;
    }
}
剑指offer与数据结构 文章被收录于专栏

本专栏包括剑指offer题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构

全部评论

相关推荐

牛客96763241...:杭电✌️也是打完招呼,没人回吗
点赞 评论 收藏
分享
09-14 17:23
门头沟学院
故事和酒66:所以说副业很重要,程序员干到40岁,再怎么也赚300万了,吃吃利息也够活下去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务