赞
踩
如何判断两个链表是否相交
O(
O(n): 一层遍历,遍历完两个链表,如果两个链表的最后一个结点指针相同,则相交,否则不相交
问题描述
问题一: 如何判断一个链表是否有环,如果有, 则返回第一个进入环的节点, 没有则返回null.
问题二: 如何判断两个无环链表是否相交, 相交则返回第一个相交节点, 不相交则返回null.
问题三: 如何判断两个有环链表是否相交, 相交则返回第一个相交节点, 不相交则返回null.
问题一: 如何判断一个链表是否有环,如果有, 则返回第一个进入环的节点, 没有则返回null.
算法:
s = x + y
s + nr, n >= 1
s + nr = 2s
s = nr -> x + y = nr -> x = nr - y
问题二: 如何判断两个无环链表是否相交, 相交则返回第一个相交节点, 不相交则返回null.
算法:
问题三: 如何判断两个有环链表是否相交, 相交则返回第一个相交节点, 不相交则返回null.
算法:
分为三种情况
情况一
* case 2: 固定一个入环节点, 从另一个入环节点出发, 遍历环一周, 如果遇到第一个入环节点, 则两个链表相交, 返回任意一个入环节点即可.
情况二
* case 3: 如果遍历环一周, 没有遇到第一个入环节点, 则两个链表不相交.
情况三
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。