最大连续子数组的和

来源:互联网 发布:如何防止域名被劫持 编辑:程序博客网 时间:2024/05/22 15:17

问题

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

例如,如果输入的数组为{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;
}
}

原创粉丝点击