找到最大和的连续子阵列,使得子阵列的长度小于等于k?

时间:2016-08-13 16:51:10

标签: algorithm dynamic-programming sub-array

如果存在两个以上的子数组,我们需要返回长度较短的子数组。

我们只关心子阵列的长度及其总和。

我知道这可以使用蛮力在O(n ^ 2)中解决,但我正在寻找一种有效的方法来做到这一点。 我也尝试使用滑动窗口概念在O(n)中解决这个问题,但后来我意识到它在某些情况下失败了。

如何有效地完成这项工作?

1 个答案:

答案 0 :(得分:1)

我建议你看一下Kadane的算法。它找到一个连续的子数组,其中包含给定数组的最大总和。它在O(n)中这样做。你的问题限制了长度为" k"。因此,您只需要在Kadane's中检查长度< = k。