我一直在解决算法简介 - 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;
}
除了将手动测试用例输入程序之外,有没有办法检查这个算法的有效性?