算法与数据结构面试分享(十七)两个单链表是否相交,若相交请求出交点

原创 2018年04月15日 20:55:25

题目:已知两个单链表是否相交,若相交请求出交点。

在前两篇博客的基础上,我们继续完善这道题,判断两个单链表是否相交,若相交我们求出他们的交点,这次我们将考虑带环的情况。

算法与数据结构面试分享(十五)判断两个链表是否有交叉(单链表,不含环)

算法与数据结构面试分享(十六)判断一个单链表是否含环,返回入口点

大体的思路是,首先判断是否带环。

1. 都不带环,但是相交,请看十六

2. 一个带坏,另一个不带环,这时候场景其实是不存在的。只要相交且一个带环,则两个都带环,即一个带环的链表与另一个不带环的链表相交,其实是不存在的。

3. 两个都带环,这时相交,说明有两个交点。分别是下面两个情况


A: 中间一张图,相交发生在环的入口点之前

B: 最右边一张图,相交发生在环上面

先分析最后一张图,相交发生在环上,其实问题就变成了求两个环的入口点。修改第16篇博客的代码,交点返回值变成一个数组,两个元素,以保证最多可以放两个交点。

再看A这种情况,其实我们要先求环的入口点对吧,然后两个链表的头结点到入口点其实就构成了两个单链表无环的交点了。

但是,我们需要一种共同的接口,同时能处理这两种情况。

以下所有的都是基于两个链表都是环的情况。

1. 求出两个环的入口点

2. 判断入口点是否相等,若等则是情况A,若不等,则可能是B,也可能是两个单独的环

3. 相等的情况A下,我们当做两个无环单链表再处理,最后一个节点是入口点,见十五

4. 不等的情况,

4.1 我们要判断一个单链表中包含另外一个入口点,若包含,则返回两个入口点,即为两交点

4.2 若不包含,则说明不相交,返回空数组

今天就不上代码了哈。更多有关算法的视频教程请访问:

1. 数据结构与算法

2. 数据结构与算法-微软经典面试题

欢迎大家关注我们的公众号和QQ群。


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gaoming201314/article/details/79952712

数据结构和算法

本次课主要是介绍在游戏开发中经常使用的数据结构,例如数组,链表,栈,队列,二叉树,递归等重要知识点讲解以及将它们里灵活的运用到算法里面。
  • 2015年01月29日 08:45

【面试题】-判断两个单链表是否相交并求出相交的第一结点

问题描述判断两个单链表是否相交,如果相交,给出相交的第一个点(假设两个链表都不存在环)。相交的链表示意图如下所示。 解题思路方法一两个没有环的链表如果是相交于某一结点,如上图所示,这个结点后面都是共...
  • zwhlxl
  • zwhlxl
  • 2015-05-15 15:53:20
  • 2082

【算法之链表(二)】判断两个链表是否相交并找出交点

题目: 一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。 首先来看一下如何判断两个链表是否存在相交的节点: 思路: 1、碰到这个问题,第一...
  • cangchen
  • cangchen
  • 2015-04-14 12:04:50
  • 2049

50. 腾讯面试题:两个单链表相交,求开始相交的点

腾讯面试题:两个链表相交,求开始相交的点 腾讯的技术面试很喜欢问算法类的问题,准备去腾讯面试前,要好好看下算法的东西。 这题如果求两个链表是否相交,或者求相交的终点好求,要求开始相交的点,不好求。...
  • hhh3h
  • hhh3h
  • 2014-08-15 23:26:51
  • 1230

如何判断两个链表是否相交并求出相交点

排除链表存在环的情况此情况的意思就是普通的单链表是否相交问题。 相交是什么意思?注意不是单纯的节点的数值域相等,相交的意思是两个链表的部门节点的是同一个,就是这些节点为这两个链表共有。 链表的...
  • dawn_after_dark
  • dawn_after_dark
  • 2017-06-28 22:21:08
  • 1510

Java代码 判断两个链表是否相交

题目:判断两个单向链表是否相交,假设两个链表均不存在环 算法思路:有两种方法,第一种方法就是在其中一个链表上顺序遍历每个节点,每遍历一个节点的时候,在另外一个链表上顺序遍历每个节点,如果便利过程中发...
  • yangmm2048
  • yangmm2048
  • 2015-04-07 19:55:53
  • 1512

判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】(C语言)

int IsListCroseWithCycle(PSListNode pL1, PSListNode pL2) { PSListNode pMeetNode1 = HasCycle(pL1)...
  • ljx_5489464
  • ljx_5489464
  • 2016-04-14 20:05:15
  • 416

判断两个链表是否相交并找出交点-笔记

判断两个链表是否相交的方法 相交链表的特征:如果两个链表相交,那么交点以后的节点都相同,否则不相交。1 暴力搜索法这个地球人都懂得2 节点hash法两个链表的节点进行hash,然后判断节点hash值...
  • renwotao2009
  • renwotao2009
  • 2016-04-12 21:50:23
  • 1380

判断两个单链表是否相交--java实现

题目描述:单链表可能有环,也可能无环。给定两个单链表的头节点 head1 和 head2, 这两个链表可能相交,也可能不相交。请实现一个函数,如果两个链表相交,请返回相交 的第一个节点;如果不相交,...
  • happymatilian
  • happymatilian
  • 2015-08-20 17:46:03
  • 3646

17_7_16:判断两个链表是否相交,若相交,求交点。如果链表带环呢?

1.【基础题】–1.判断两个链表是否相交,若相交,求交点。(假设链表不带环)2.判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】 2.【附加题】–请问下面的程序一共输出多少个“-”...
  • qq_35524916
  • qq_35524916
  • 2017-07-16 23:52:12
  • 236
收藏助手
不良信息举报
您举报文章:算法与数据结构面试分享(十七)两个单链表是否相交,若相交请求出交点
举报原因:
原因补充:

(最多只允许输入30个字)