问题
给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。
例如,如果输入的数组为{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;
}
}
本文介绍了一种寻找整数数组中具有最大和的连续子数组的算法实现。通过示例展示了如何从给定数组中找到最大子数组及其和,如{1,-2,3,10,-4,7,2}
3万+

被折叠的 条评论
为什么被折叠?



