gpt4 book ai didi

algorithm - 间隔列表中范围非重叠间隔的最大总和

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:03 24 4
gpt4 key购买 nike

有人问我这个问题:
您将获得一个间隔列表。你必须设计一个算法来找到非重叠区间的序列,使得区间范围的总和最大。

例如:
如果给定的间隔是:

["06:00","08:30"],
["09:00","11:00"],
["08:00","09:00"],
["09:00","11:30"],
["10:30","14:00"],
["12:00","14:00"]

三个区间时范围最大化

[“06:00”, “08:30”],
[“09:00”, “11:30”],
[“12:00”, “14:00”],

被选中。

因此,答案是420(分钟)。

最佳答案

这是一个标准的区间调度问题。
可以用动态规划求解。

算法
n 间隔。 sum[i] 在排序的区间数组中存储区间 i 的区间的最大总和。算法如下

Sort the intervals in order of their end timings.
sum[0] = 0
For interval i from 1 to n in sorted array
j = interval in 1 to i-1 whose endtime is less than beginning time of interval i.
If j exist, then sum[i] = max(sum[j]+duration[i],sum[i-1])
else sum[i] = max(duration[i],sum[i-1])

迭代进行了 n 个步骤,在每个步骤中,可以使用二进制搜索找到 j,即在 log n 时间内。因此算法需要 O(n log n) 时间。

关于algorithm - 间隔列表中范围非重叠间隔的最大总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com