执行代码参见GitHub
https://github.com/GloryXu/algorithm/tree/master/src/main/java/com/redsun/algorithm/subarraysum
逛论坛无意中发现一个算法帖子,一时间也没想出更好的解决方式,搜索了下,整理下。
暴力破解
@Override
public void execute() {
for (int i = 0; i < arr.length; i++) {
// 遍历从i开始的所有子数组
for (int j = i; j < arr.length; j++) {
int thisSum = 0;
// 累计求和
for (int k = i; k <= j; k++) {
thisSum += arr[k];
}
if (thisSum > maxSum) {
// 记录最大子数组的位置和长度
maxSum = thisSum;
start = i;
end = j;
}
}
}