假设有两个单链表,它们都在某个点相交并成为一个单链表。两个列表的头或起始指针都是已知的,但列表的交叉节点和长度是未知的。
从两个相交链表中找到相交节点的最佳算法的最坏情况时间复杂度是多少?
(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 是链表的总长度。
- 遍历两个链表,找到m和n。
- 回到头部,然后遍历 |m − n|较长列表中的节点。
- 现在进入锁定步骤并比较节点,直到找到共同的节点。
选项(C)是正确的。
这个问题的测验