📜  门| GATE CS Mock 2018年|问题30

📅  最后修改于: 2021-06-29 02:20:23             🧑  作者: Mango

假设有两个单链表,这两个单链表在某个点相交并成为一个单链表。两个列表的开头或起始指针都是已知的,但是列表的相交节点和长度是未知的。
从两个相交的链表中找到相交节点的最佳算法的最坏情况下的时间复杂度是多少?
(A) Θ(n * m),其中m,n是给定列表的长度
(B) Θ(n ^ 2),其中m> n和m,n是给定列表的长度
(C) Θ(m + n),其中m,n是给定列表的长度
(D) Θ(min(n,m)),其中m,n是给定列表的长度答案: (C)
说明:在最坏的情况下,这需要Θ(m + n)时间和O(1)空间,其中M和N是链表的总长度。

  1. 遍历两个链接列表以找到m和n。
  2. 回到头顶,然后遍历| m − n |较长列表上的节点。
  3. 现在,进入锁定步骤并比较节点,直到找到常见的节点为止。

选项(C)是正确的。
这个问题的测验