gpt4 book ai didi

java - 如何找到 2 个单链表的公共(public)节点?

转载 作者:行者123 更新时间:2023-12-02 10:13:06 24 4
gpt4 key购买 nike

我解决这个问题的方法是使用哈希图来存储第一个链表的地址并遍历第二个数组并检查我是否找到了地址。如果找到了,我将返回该地址处的节点。
这需要 O(m+n),其中 m 和 n 是链表的长度,但这里我们使用 O(Linear) 空间复杂度。
我发现了另一种解决这个问题的方法,它具有恒定的空间但相同的时间复杂度,但它并没有消除我的疑问。
link to the question
如果我的输入是

    list 11 = 1 -> 2 -> 3 -> 4 -> 6 ->7;
list l2 = 2 -> 9;

在这种情况下,我在截断额外长度后对列表的一次遍历将变成这样
   diff=4;   // i would advance the list 1 by 4 elements as it has greater length
l1= 6-> 7;
l2= 2 -> 9;
在这里我失去了我的交叉点节点。
有人可以帮我弄这个吗?

最佳答案

该方法仅在输入链表与交点相同时有效,例如:

1 -> 2 -> 3 -> 4 -> 5

12 -> 11-> 10 -> 3 -> 4 -> 5
这里两个列表从交点 3 开始是相同的。
只有这样,该算法才有效。
笔记 :
这个问题基本上是为了找到一个倒Y形列表(两个列表的组合)的交点

关于java - 如何找到 2 个单链表的公共(public)节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62846935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com