`
gaofen100
  • 浏览: 1228146 次
文章分类
社区版块
存档分类
最新评论

两单向链表相交问题

 
阅读更多
题目:给出两个单向链表的头指针,比如h1、h2,
判断链表是否相交,如果不相交返回NULL;如果相交,返回指向第一个相交节点的指针;
时间复杂度控制在O(n)的前提下。
这道题首先要弄明白的是,两单向链表相交的话,一定是Y型相交,不可能出现X型,弄清楚这点后接下来的工作就是:
(1)先找到h1,h2的最后一个节点p1和p2,同时记录节点数量a,b;
(2)判断最后一个节点是否相同;
如果不相同则没相交;
如果相同,则从第一个节点和|a-b|+1个节点开始比较,看是否相等,不相等就寻找下一个节点直到找到交叉点。

分享到:
评论

相关推荐

    编程判断两个链表是否相交

    本篇文章将详细探讨如何判断两个单向链表是否相交的问题,以及相应的解决方案。 #### 问题背景 在实际应用中,尤其是在大型系统开发过程中,可能会遇到两个链表相交的情况。例如,当两个链表共享部分节点时,如果不...

    编程判断两个链表是否相交.pdf

    如果两个链表相交,即意味着它们共享部分节点,这可能会导致一系列问题,例如当删除一个链表时,可能会误删另一个链表的数据。因此,准确高效地判断两个链表是否相交对于维护数据完整性和程序稳定性具有重要意义。 ...

    链表面试题总结

    - **单向链表**:每个节点只包含一个指向后继节点的指针。 - **双向链表**:每个节点包含两个指针,一个指向前驱节点,另一个指向后继节点。 - **循环链表**:最后一个节点的指针不是指向`NULL`,而是返回到链表的...

    这是Kotlin语言版本的 Android 客户端本地化算法展示 Java 语言编写的面试算法_kotlin_代码_下载

    两个单链表相交的问题 将单链表的每K个节点之间逆序 二叉树问题 用二叉、先序和序顺序法 打印二叉树的存在节点 二叉树的序列化和反序列化 示例算法 冒泡示例 选择示例 插件示例 计数示例 快速示例 并举示例 堆示例...

    [剑指-Offer] 52. 两个链表的第一个公共节点(思维、快慢指针、巧妙解法)

    题目的具体要求是,给定两个单向链表,找出它们的第一个公共节点。这个问题的难度在于,两个链表可能有不同的长度,并且在相交之前可能各自走过不同的路径。这就意味着,直接遍历其中一条链表寻找交点并不总是可行的...

    微软百度谷歌等公司面试算法数据结构100题

    这道题目要求判断两个单向链表是否相交,且假设这两个链表均不带环。解决这一问题需要对链表有深刻的理解,以及能够处理指针和链表节点。 8. 链表相交的第一个节点 这个扩展问题要求不仅判断链表是否相交,而且还要...

    算法面试题总结_嵌入式-常用知识&面试题库_大厂面试真题.doc

    解决方法是使用双指针算法,分别从两个链表的头节点开始遍历,如果两个链表相交,则会在某个节点相遇。 8. 怪题:本题目考察了思维和逻辑的知识,要求解决一些怪题,例如判断三盏灯分别是由哪个开关控制的,如何...

    微软公司等数据结构+算法面试100题 第1 100题 全部出炉

    - 这个问题要求判断两个单向链表是否相交,并找出相交的起始节点。 - 通过双指针技巧,分别遍历两个链表,如果链表长度不同,先让长链表的指针移动,使得两个链表长度相同,然后再同时遍历两个链表,当两个指针...

    数据结构+算法面试100题.pdf

    本题目要求给出两个单向链表的头指针,判断这两个链表是否相交。解决这个问题的关键是正确地设计算法,以 O(n) 的时间复杂度解决问题。 8. 算法题 本题目要求解决一些比较怪的题目,考验思维能力。解决这些问题的...

    java二叉树算法源码-DataStructure:常用数据结构及其算法的Java实现,包括但不仅限于链表、栈,队列,树,堆,图等经典数据结构

    单向链表的数据结构及其相关算法:单向链表结构包含两个要素,即头结点head和链表大小size,具体操作包括: 链表的增删 链表是否为空 链表的大小 链表的打印输出 删除链表重复节点 链表倒数第K个元素 链表的反转 ...

    一线大厂百度面试题.zip

    3.2.4 两条相交的单向链表,如何求他们的第一个公共节点? 3.2.5 求单向局部循环链表的环入口? 3.2.6 IP 地址如何在数据库中存储? 3.2.7 new/delete 和 malloc/free 的底层实现? 3.2.8 overload 、override 、...

    百度2012实习生校园招聘笔试题

    6. 单向链表的相交问题: 要判断两个单向链表是否有公共节点,可以使用双指针法。设置两个指针,分别指向两个链表的头节点,每次移动一个指针,直到两个指针相遇,或者一个链表的指针到达null。相遇则表示链表有...

    100 questions by_july

    给定两个单向链表的头指针,判断这两个链表是否相交。 **解题思路**: - 分别遍历两个链表,记录它们的长度。 - 让较长的链表先走两链表长度差的步数,然后两个链表一起前进。 - 如果在某一点相遇,则表示两个链表...

    数据结构(C语言版)\Java数据结构和算

    4.2 用C语言表示单向链表 4.3 链式栈与链式队列 4.4 多项式 4.5 其它链表操作 4.6 等价类 4.7 稀疏矩阵 4.8 双向链表 第5章 树 5.1 引论 5.2 二叉树 5.3 遍历二叉树 5.4 其它二叉树操作 5.5 线索二叉树 ...

    软件专业综合PPT学习教案.pptx

    链表中,每个元素包含数据域(存储元素值)和指针域(存储后继元素的地址),分为单向链表和双向链表等类型。单向链表只有一个指针域指向下一个元素,而头指针则指向链表的第一个元素。 栈是一种特殊的线性表,仅...

    数据结构和算法面试最新100题

    3. **判断相交:** 如果两个指针相遇,则说明两个链表相交。 **代码示例:** ```cpp bool doListsIntersect(ListNode* head1, ListNode* head2) { ListNode* p1 = head1; ListNode* p2 = head2; while (p1 != p2)...

    leetcode2-Algorithm-swift:记录一下,算法学习

    单向链表 Leetcode [无代码] [无代码] 1、两数之和 2. 两数相加 3. 无重复字符的最长子串 14. 最长公共前缀 21. 合并两个有序链表 23. 合并K个排序链表 33. 搜索旋转排序数组 42. 接雨水 53. 最大子序和 56. 合并...

    大厂面试系列二.pdf

    求两条相交的单向链表的第一个公共节点问题,可以通过遍历两条链表,计算它们的长度差,先让较长的链表移动长度差的步数,然后同时遍历两个链表,当它们指向同一个节点时,该节点即为第一个公共节点。 求单向局部...

    leetcode中国-LeetCode:力扣解决方案

    反转单向链表和双向链表 用curr,prev,next注意不要断链 在行和列都排好序的矩阵中找数,从右上角开始 打印两个单链表的相交的问题,注意还要考虑有环没有。 如何找到入环的节点? 当快慢指针相遇时,把快指针指向...

Global site tag (gtag.js) - Google Analytics