编程之美

BoP——3.6判断两个链表是否相交

2017-10-19  本文已影响0人  Myth52125

题目

判断两个链表是否相交,简单的,在无环的情况下。

方法一

暴力的对比两个链表
O(n*m)

方法二

hash表,map,首先使用一个链表建立一个map,存储链表节点的地址。
然后再去遍历另一个链表

这种方法适用于有环,无环,同时还能判断环开始的位置。
首选的方法。
需要额外空间

方法三

如果只需要判断是否相交,不需要输出相交节点集合。
那么可以这样,链表A和链表B,记录A的最后位置,然后将B连接到A的最后位置,
如果有相交的部分,那么新的链表就一定有环。

新的链表

将问题转化为求新的链表是否有环。
或者直接从B开始遍历,如果能再次叨叨B证明,有相交部分。

方法四

如果两个链表相交,那么假设相交节点为N,那么该节点后面的节点一定都是两个节点共有的。
所以如果相交,那么两个两个链表的最后一个节点就是共有的。
所以只需要判断两个链表最后一个节点是否相等就可以了。

相交特性
上一篇 下一篇

猜你喜欢

热点阅读