Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何找到两个单链表的公共节点点?_Java_C++_C_Algorithm - Fatal编程技术网

Java 如何找到两个单链表的公共节点点?

Java 如何找到两个单链表的公共节点点?,java,c++,c,algorithm,Java,C++,C,Algorithm,我解决这个问题的方法是使用hashmap存储第一个链表的地址,遍历第二个数组并检查是否找到了地址。如果找到了,我将返回该地址处的节点。 这需要O(m+n),其中m和n是链表的长度,但这里我们使用O(线性)空间复杂性。 我找到了解决这个问题的另一种方法,它具有恒定的空间,但同样的时间复杂性,但它并没有消除我的疑虑。 如果我的输入是 list 11 = 1 -> 2 -> 3 -> 4 -> 6 ->7; list l2 = 2 -> 9;

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

如果我的输入是

    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形列表(两个列表的组合)的交点。

您的列表没有问题陈述中定义的交点。是的!很抱歉,我刚才说的是公共节点..将编辑问题为什么不迭代一个列表并将每个节点的地址添加到a,然后尝试将下一个列表中的节点添加到该集合。添加失败时,您已找到公共节点。。如果成功地为两个列表添加了指针,则没有公共节点。在代码中,l1和l2已排序,但在简介中未指定。列表是否已排序?@Giritejabile正如我在回答中提到的,您不能使用链接中的方法进行上述输入。