最大连续子数组的和
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;
}
}
给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。
例如,如果输入的数组为{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;
}
}
相关文章推荐
- PAT (Advanced Level) 1007. Maximum Subsequence Sum (25) 最大连续子数组,一次遍历,stack辅助
- 连续子数组的最大和
- 连续子数组的最大和
- 剑指Offer之面试题31:求连续子数组最大和
- 连续子数组最大和
- 《剑指offer》连续子数组的最大和
- 剑指offer(15)-连续子数组的最大和
- 算法学习-连续子数组求和最大值
- 剑指offer28--最大连续子数组的和
- 求连续子数组的最大和
- 分治法求最大连续子数组
- 剑指Offer: (Java实现) 连续子数组的最大和
- 算法训练——求最大连续子数组
- 最大连续子数组积的线性解法
- 连续子数组的最大和
- 剑指offer之连续子数组的最大和
- 连续子数组的最大和
- 《编程之法》:最大连续子数组和
- 最大连续子数组和
- 最大连续子数组和