这是一个算法 101 问题:
给定一个由 N 个元素组成的数组,资助导致最大总和的数组子集。例如,如果我的数组是 {1, -3, 5, -2, 9, -8, -6, 4},那么答案应该是 {5, -2, 9}。
到目前为止,我有一个 O(N^2) 解决方案:对于数组的每个索引 i,如果所有 j > i 的索引 (i,j),我计算子数组的总和;跟踪最大值,一路上对应的最大值的下限索引和上限索引。然后我增加 i 并重复该过程,直到 i < 数组长度。
我想知道我是否可以做得比这更好。我只是在寻找一个正确的方向。从我的数学背景来看,如果我能沿途跟踪导数和二阶导数,这可能会以某种方式提供线索,但到目前为止,我有点被这个问题困住了一段时间。