如何解决BST问题?

问题描述 投票:0回答:1

给我这个问题:

您将获得n个不同整数a0,a1,...的序列。 。 。 an-1。每个迭代时,您选择最大数量并将其删除,这将增加检测成本最大数字是它左边的数字。重复这n次。给定ai实施O(n log n)算法来计算n次迭代的总成本。

我知道我们必须使用BST来解决此问题,因为它是O(N log N),但是,我不确定该怎么做。

我以为我可以将值和索引存储在hashMap中,当删除操作完成后,我们在BST中搜索该索引,然后在遍历的路径中添加索引值。但是,在删除节点时,对于所有要删除的索引,我们必须递减BST索引值。

我不确定这是否可行,并且我很乐意为此提供任何建议/指导:)

algorithm binary-search-tree
1个回答
1
投票

虽然@ 0x499602D2注释正确,但排序是正确的方法。这个问题是合并排序的另一个应用,类似于计数反转。

从右侧合并一个元素会从插入点开始向右减少元素数量,从而降低了成本(您知道为什么吗?)。数组完全排序后,成本降低到0。

我希望这足以使您入门。

© www.soinside.com 2019 - 2024. All rights reserved.