我遇到一个面试问题。
给定开始时间和结束时间以及在此期间传输的能量。
我必须在任何时刻找到最大的能量。
例如:
给定三个间隔
(1,5,10)[从1开始,到5结束,此时能量为10]
(2、7、14)
(6、8、16)
然后在任何时刻的最大能量在时间6到7之间为30。
我的方法:在某种程度上,这是区间重叠问题,但由于第三个参数(能量),我无法破解它。
在研究中,我认为它可以通过区间树来求解。我正在寻找一些方法和伪代码。
谢谢!!。

最佳答案

建议的o(nlogn)算法:
把每个(开始,结束,能量)变成(开始,能量)和(结束,-能量)对
按第一个坐标(时间)排序对
迭代更新当前能量并跟踪最大值
当一个结束时间和一个开始时间相匹配时,你需要小心决定该怎么做-这是否算作一个瞬间的高能量?

关于algorithm - [特定间隔的最大能量],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44761705/

10-10 03:44