有一个A
包含(正负)整数的数组。找到一个(连续的)子数组,其元素的绝对和最小,例如:
A = [2, -4, 6, -3, 9]
|(−4) + 6 + (−3)| = 1 <- minimal absolute sum
我首先实现了一个蛮力算法,它是O(N^2)
or O(N^3)
,尽管它产生了正确的结果。但任务指定:
complexity:
- expected worst-case time complexity is O(N*log(N))
- expected worst-case space complexity is O(N)
经过一番搜索,我认为也许可以修改 Kadane 的算法以适应这个问题,但我没有做到。
我的问题是 - Kadane 的算法是正确的方法吗?如果没有,您能否指出我正确的方向(或在这里命名一个可以帮助我的算法)?我不想要现成的代码,我只需要帮助找到正确的算法。