标签:编程之美 判断两个链表是否相交
解法一:
判断第一个链表的每个节点是否在第二个链表中,O(M*N);
解法二:
对第一个链表的节点地址hash排序,建立hash表,然后对第二个链表的每个节点的地址查询hash表,如出现,相交
时间复杂度O(M+N),空间复杂度O(M)。
解法三:
把第二个链表接在第一个链表后面,得到的链表有环,相交,否则,不相交。‘
第二个链表的表头一定在环上,只需从第二个链表开始遍历
时间复杂度O(N),常数空间
解法四:
如果两个没有环的链表相交于某一节点,那么在这个节点之后的所有节点都是两个链表共有的。
如果相交,则最后一个节点一定是共有的。
先遍历第一个链表,记住最后一个节点,然后遍历第二个链表,到最后一个节点时和第一个链表的最后一个节点比较,相同则相交。
时间复杂度O(M+N),空间复杂度,只用了一个额外的指针来存储最后一个节点。
标签:编程之美 判断两个链表是否相交
原文地址:http://blog.csdn.net/wtyvhreal/article/details/45318303