您的位置:首页 > 其它

最大连续子数组的和

2017-08-22 16:11 253 查看
问题

给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。

例如,如果输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},那么输出为该子数组的和18。

实现

public class MaxSubArray {
public static void main(String[] args) {
int[] arr = {1,-2,3,10,-4,7,2};
int result = maxSum(arr);
System.out.println(result);
}
public static int maxSum(int[] arr) {
int maxResult = arr[0];
int maxTemp = 0;
for (int i = 0; i < arr.length; i++) {
if (maxTemp >= 0) {
maxTemp += arr[i];
} else {
maxTemp = arr[i];
}
if (maxTemp > maxResult) {
maxResult = maxTemp;
}
}
return maxResult;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: