public class SubArrayWithMaxSum {
public static int maxSumofSubArray(int[] src) {
int curSum = 0;
int maxSum = src[0];
for (int i = 0; i < src.length; i++) {
if (curSum >= 0) {
curSum = curSum + src[i];
} else {
curSum = src[i];
}
if (curSum > maxSum) {
maxSum = curSum;
}
}
return maxSum;
}
public static void subArrayWithMaxSum(int[] src) {
int curSum = 0;
int maxSum = 0;
int startPos = 0, endPos = 0;
for (int i = 0, j = 0; j < src.length; j++) {
curSum += src[j];
if (curSum > maxSum) {
maxSum = curSum;
startPos = i;
endPos = j;
}
if (curSum < 0) {
i = j + 1;
curSum = 0;
}
}
int[] subArray = new int[endPos - startPos + 1];
System.arraycopy(src, startPos, subArray, 0, subArray.length);
System.out.println("maxSum : "+maxSum);
System.out.println("sub array : " + Arrays.toString(subArray));
}
public static void main(String[] args) {
int[] ary = new int[]{-1, 3, 6, -9, 5, 12, -100, 3, 5, -2};
subArrayWithMaxSum(ary);
}
}
和最大的连续子数组
最新推荐文章于 2022-06-10 09:24:59 发布