当前位置: 首页 > 知识库问答 >
问题:

如何处理BST问题?

詹杰
2023-03-14

我遇到了这个问题:

您将获得一个由 n 个不同的整数 a0、a1、. . .an−1.在每次迭代中,您选择最大数字并将其删除,取消最大数字的成本是其左侧的数字数。重复此 n 次。给定ai实现一个O(n log n)算法来计算n次迭代的总成本。

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

我想我可以在hashMap中存储值和索引,当删除完成后,我们在BST中搜索该索引,并在遍历的路径中添加索引值。但是,在删除节点时,我们必须减少所有索引的 BST 索引值

我不确定这是否可行,我希望得到任何建议/指导:)

共有1个答案

爱炯
2023-03-14

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

从右边合并一个元素会减少左边剩余元素的数量(您知道为什么吗?)。数组完全排序后,成本降到0。

我希望这足以让你开始。

 类似资料:
  • 这是我的ApiService类:

  • 有时候避免对公司或工程的成功至关重要却很无聊的任务是不可能的。这些任务可能真的会降低那些必须执行它们的人的斗志。最好的处理方法是使用或者发扬Larry Wall的程序员懒惰美德。试着找一些方法让计算机去做这个任务,或者帮助你的队友去做这个。用一个程序花一个星期去完成要手动去用一个星期完成的任务能让你懂得更多,并且有时候这是可重用的。 如果所有其他的途径都不能工作,为那些必须做这个无聊任务的人道歉,

  • 本文向大家介绍JavaScript多并发问题如何处理,包括了JavaScript多并发问题如何处理的使用技巧和注意事项,需要的朋友参考一下 经常在写代码的时候碰到这样的场景:页面初始化时显示loading页,同时启动多个ajax并发请求获取数据,当每个ajax请求返回时结束loading。 举个例子,一个下订单的页面,要查询常用地址信息、商品信息、地市信息…而这些请求都是异步的,希望等到所有数据加

  • 问个基础问题噻 这个in该怎么写,怎么给参数好? PointsMapper.java里

  • 本文向大家介绍如何处理Python3.4 使用pymssql 乱码问题,包括了如何处理Python3.4 使用pymssql 乱码问题的使用技巧和注意事项,需要的朋友参考一下 在项目中发现这样一个问题:sqlserver数据库编码为gbk,使用python3.4+pymssql 查询,中文乱码,经过一番思考问题解决,下面把解决办法分享给大家: 接下来给大家介绍python 使用pymssql连接s

  • 问题内容: 根据python的GIL,我们不能在CPU绑定的进程中使用线程,所以我的问题是Apache Spark如何在多核环境中利用python? 问题答案: 多线程python问题与Apache Spark内部结构分开。Spark上的并行性在JVM内部处理。 原因是在Python驱动程序中,使用Py4J启动JVM并创建JavaSparkContext。 Py4J仅在驱动程序上用于Python和