【发布时间】:2020-03-03 22:05:17
【问题描述】:
我目前有一种方法可以将一个链表 (list2) 附加到另一个链表 (list1) 的末尾。它通过一个 while 循环来执行此操作,每次迭代都将 list1 中的下一个节点附加到 list2 的末尾,依此类推。
我的理解是,这将是 O(n) 时间复杂度,因为 while 循环中的迭代次数直接由 list2 的大小决定。如果list2有15个节点,函数执行15次追加,如果list2有1000个节点,函数执行1000次追加。
然而,我经常看到人们注意到,如果你保留一个指向 list1 尾部的指针,这个联合可以在 O(1) 时间复杂度内执行。这怎么可能?根据我(诚然有限)的理解,我可以在一定程度上理解单个追加是 O(1),但是如果您要追加整个列表,它是否需要在 while 循环中并扫描所有 list2 无论如何,因此O(n)?
【问题讨论】:
标签: algorithm while-loop linked-list time-complexity complexity-theory