Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [−2,1,−3,4,−1,2,1,−5,4],
the contiguous subarray [4,−1,2,1] has
the largest sum = 6.
public class Solution {
public int maxSubArray(int[] A) {
if (A == null || A.length == 0) return Integer.MIN_VALUE;
int[] max = new int[A.length];
max[0] = A[0];
int maximum = max[0];
for (int i = 1; i < A.length; i++) {
if (max[i - 1] > 0) {
max[i] = A[i] + max[i - 1];
} else {
max[i] = A[i];
}
if (maximum < max[i]) {
maximum = max[i];
}
}
return maximum;
}
}
本文介绍了一种寻找具有最大和的连续子数组的算法实现。通过动态规划的方法,该算法能在O(n)的时间复杂度内解决此问题。举例说明了如何在给定数组中找到最大子数组和。
1172

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



