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