第 1 题
数据结构已知两个长度分别为 m 和 n 的升序链表,若将它们合并为一个长度为 m + n 的降序链表,则最坏情况下的时间复杂度是( )。
A. O(n)
B. O(mn)
C. O(min(m, n))
D. O(max(m, n))
查看答案与解析
参考答案:D
题目详解:
要合并两个长度分别为 和 的升序链表为一个长度为 的降序链表,最坏情况下的时间复杂度取决于如何遍历和比较两个链表的节点。
-
合并过程分析:
- 每次从两个链表的头部选择较大的节点,将其插入到新链表的头部,形成降序链表。
- 最坏情况下,需要比较所有 个节点,但每次比较只需 时间。
- 关键在于如何高效找到每次要插入的节点。如果使用双指针法,每次移动一个链表的指针,最多需要遍历 次。
-
时间复杂度推导:
- 双指针法的最坏情况是两个链表交替比较,最多需要 次操作。
- 因此,时间复杂度为 。
- 由于 等价于 (因为 主导了增长趋势),所以最坏情况下的时间复杂度为 。
-
选项分析:
- A. :忽略了 的影响。
- B. :远高于实际复杂度。
- C. :低估了复杂度。
- D. :正确反映了最坏情况下的时间复杂度。
正确答案:D
















