【发布时间】:2018-08-19 10:08:57
【问题描述】:
我一直在解决算法简介 - CLRS 中的练习,并且遇到了在线性时间内求解最大连续子数组(Q 4.1-5)。 请在下面查看我的解决方案。我一直在为这个练习寻找在线评委,但没有找到。在寻找解决方案时解决它后,我发现 kadane 的算法似乎与我的实现不同,而且当所有数字均为负数时,此解决方案也给出了正确的输出。
public static int linearMaxSolve(int[] arr) {
int max = Integer.MIN_VALUE;
int sum = 0;
for (int i : arr) {
sum += i;
if (i > sum) {
sum = i;
}
if (sum > max) {
max = sum;
}
}
return max;
}
除了将手动测试用例输入程序之外,还有其他方法可以检查该算法的有效性吗?
【问题讨论】:
-
那么你的问题是什么?
-
请注意“Stack Overflow 不是论坛”。 (来自tour 页面)所以,请提出问题。
-
如果所有数组元素都是负数,人们可以争论正确的输出是什么。一个可能的答案是 0(对于空子数组)。
标签: java algorithm kadanes-algorithm