我一直在解决算法简介 - 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;
}
Run Code Online (Sandbox Code Playgroud)
除了向程序输入手动测试用例之外,还有其他方法可以检查该算法的有效性吗?