如何找到一系列整数的最低价值?

时间:2012-01-04 09:01:30

标签: algorithm integer sequence sequences

我有一个整数序列(正面和负面),如下所示:

12,-54,32,1,-2,-4,-8,12,56,-22,-21,4,17,35

我需要找到这个序列的任何子序列(当然还有该子序列的起始索引和结束索引)的最差结果(较小的值总和)。

有没有办法做到这一点不是2 ^ n(逐个计算所有可能的序列)?

例如,使用这个简单的序列:

1,2,-3,4,-6,4,-10,3,-2

值的较小总和将是子序列:

-6,4,-10 (with start index 4 and end index 6)

1 个答案:

答案 0 :(得分:1)

通过更改每个项目的符号,可以将找到最小值的问题转换为最大搜索。

对于最大子序列,存在众所周知的算法,参见例如here

您可以转换列表并应用所述算法或稍微修改算法本身(min而不是max或minus而不是plus),以便使用原始列表。