gpt4 book ai didi

algorithm - 将 "pop list"转换为 "index list"的高效算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:10:35 25 4
gpt4 key购买 nike

假设我有一个项目列表:

[ A, B, C, D ]

和一个“流行列表”:

[ 2, 0, 1, 0 ]

f(x,p) = y 是一个将 x 中的索引 p 弹出到新列表中的函数,y.

使用这个过程,你可以计算

f([ A, B, C, D ], [ 2, 0, 1, 0 ]) = [ C, A, D, B ]

但是,f 的成本是不切实际的,因为它从列表中弹出并重复加入剩余元素。

最好有一个算法,g,将弹出列表转换为索引列表,这样

g(p) = [ 2, 0, 3, 1]

这将允许有效地构建新列表。

是否有一个有效的算法,也许是 O(N),可以用于实现 g

最佳答案

最简单的方法是将 f 应用于索引列表:

g(p) = f([0, 1, ... length(p)-1], p)

(假设 length(p) 是索引的范围。否则使用适当的长度,或者在必要时动态增长)

这是 O(n^2)。您可以通过将 x 存储在顺序统计树而不是列表中来使其O(n log n):

https://en.wikipedia.org/wiki/Order_statistic_tree

关于algorithm - 将 "pop list"转换为 "index list"的高效算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57471031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com