Fenwick 树是一种允许两种操作的数据结构(您可以通过更多操作来扩充它):
- 点更新
update(index, value)
- 前缀和
query(index)
这两个操作都在O(log(n))
wheren
是数组的大小。我在理解如何进行操作及其背后的逻辑方面没有问题。
我的问题是如何从数组中初始化 Fenwick 树。O(nlog(n))
显然,我可以通过调用n
times来实现这一点update(i, arr[i])
,但是有没有办法在O(n)
.
如果维基百科告诉你可以初始化,我为什么要问这个nlog(n)
?因为这篇文章太简陋了,所以我不确定它是否是可以达到的最佳复杂性。还与天真的堆创建相似,这是通过一个一个地填充堆来完成的,并且可以在O(nlog(n))
与智能堆初始化的对比中实现,O(n)
这让我希望可以在 Fenwick 树中完成类似的事情。