【发布时间】:2020-08-05 19:06:52
【问题描述】:
我遇到了这个问题:
给定一个由 n 个不同整数组成的序列 a0, a1, 。 . .一个-1。每个 迭代你选择最大数量并删除它,检测成本 最大数字是它左边的数字的数量。重复 这 n 次。给定 ai 的实现一个 O(n log n) 算法来 计算 n 次迭代的总成本。
我知道我们必须使用 BST 来解决这个问题,因为它是 O(N log N),但是,我不知道该怎么做。
我在想我可以将值和索引存储在 hashMap 中,当删除完成后,我们在 BST 中搜索该索引并将索引值添加到遍历的路径中。然而,在删除节点时,我们必须减少所有索引的 BST 索引值 > 要删除的索引。
我不确定这是否可行,我希望得到任何关于此的建议/指导 :)
【问题讨论】:
-
不需要BST,只需排序,计数
sum,然后反向循环并不断添加sum-current来回答和更新总和值 -
@Photon 但是排序会改变元素的位置,我们需要它们来计算当前最大值左侧的元素数量。
标签: algorithm binary-search-tree