如何判断两个无环链表是否相交
问题
如何判断两个无环链表是否相交,相交则返回第一个相交节点,不相交返回null。
思路
如果两个无环链表相交,那么从相交节点开始,一直到两个链表终止的这段,二者共享。具体如下:
1.链表1从头节点开始,走到最后一个节点,统计链表1的长度记为len1,同时记录链表1的最后一个节点记为end1。
2.链表2从头节点开始,走到最后一个节点,统计链表2的长度记为len2,同时记录链表2的最后一个节点记为end2。
3.如果end1 != end2,说明二者不相交,返回null。否则,进入步骤4。
4.如果链表1比较长,链表1就先走len1-len2步;如果链表2比较长,链表2先走len2-len1步。然后两者一起走。走的过程中,两个链表第一次走到一起的那个节点,就是第一个相交的节点。
代码
public Node noLoop(Node head1, Node head2){