Можно ли построить дерево Фенвика в O (n)?

Дерево Фенвика это структура данных, которая допускает два вида операций (вы можете дополнить ее большим количеством операций):

обновление точкиupdate(index, value)сумма префиксаquery(index)

Обе операции находятся вO(log(n)) гдеn это размер массива. У меня нет проблем с пониманием того, как выполнять обе операции и их логику.

Мой вопрос заключается в том, как я могу инициализировать дерево Фенвика из массива. Очевидно, я могу достичь этого вO(nlog(n))по телефонуn разupdate(i, arr[i]), но есть ли способ инициализировать его вO(n).

Почему я спрашиваю это, если Википедия говорит, что вы можете инициализировать вnlog(n)? Поскольку статья настолько элементарна, что я не уверен, является ли это лучшей сложностью, которую можно достичь. Также проводим параллели с созданием наивной кучи, которая выполняется путем заполнения кучи одна за другой и может быть достигнута вO(nlog(n)) по сравнению с умной инициализации кучи вO(n) дает мне надежду, что нечто подобное можно сделать в дереве Фенвика.

Ответы на вопрос(0)

Ваш ответ на вопрос