2017-06-26 19 views
0

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

+0

这是不是真的适合该网站。你有问题吗?请求代码在这里是offtopic。 – Carcigenicate

+0

的[如何最有效地在一个大的阵列在指定的范围内增加的值,然后找到最大的值]可能的复制(https://stackoverflow.com/questions/37798799/how-to-most-efficiently-increase-values -at-A-指定范围-IN-A-大阵列的) – m69

回答

1

推荐O(nlogn)算法:

  1. 打开每个(开始,结束,能量)转换成(启动能量)和(端, - 能量)对
  2. 排序由所述对第一坐标(时间)
  3. 迭代通过对更新当前能源和跟踪最大

你需要小心地决定如何在何时结束时间的开始时间一致的情况下做的 - 这是否算不算一个inst有害的高能量或不?