代码之家  ›  专栏  ›  技术社区  ›  Lavir the Whiolet

列表的快速连接

  •  0
  • Lavir the Whiolet  · 技术社区  · 14 年前

    concatenate(someList, <single-sized list containing one item>) “操作”。如何使这些连接和迭代尽可能快地通过结果列表?

    我考虑过两种实现,但可能有一种更快:

    • 通过将所有项复制到结果列表来实现连接。这会导致迭代的O(n)时间开销,但也会导致连接的O(n)性能。
    • ListsConcatenation (它还具有 List ),它保留对所有原始列表的引用,并将所有调用转发到相应的列表。这将导致O(1)连接的时间开销,但迭代的时间开销将变为O(n*log(n))。
    2 回复  |  直到 14 年前
        1
  •  1
  •   Marcelo Cantos    14 年前

    通常,当按从左到右的顺序填充列表时,会弹出此要求。如果是,那么问题不是如何在O(1)时间内插入单个元素,而是如何插入 O中的元素( n个 )时间到了,简单的答案是将列表从头到尾建立,并在最后将其反转。

    next 指针。

        2
  •  0
  •   Nicholas White    14 年前

    写一个链表,它有一个指向结束节点的指针和一个指向头部的指针。若要在O(1)中连接列表,请取消引用要首先转到的列表的“结束”指针,并使该节点的“下一个”指针指向要追加的列表的头部。记住更新端点以指向被附加列表的“end”指针引用的节点。。。