Maximum Subarray II
public int maxTwoSubArrays(ArrayList<Integer> nums) {
// write your code
int minSum =0;
int sum = 0;
int[] left = new int[nums.size()];
int[] right = new int[nums.size()];
int max = Integer.MIN_VALUE;
for(int i = 0; i < nums.size(); i++){
sum += nums.get(i);
max = Math.max(max, sum-minSum);//还是要算前面所有数的最大值,而不是到当前截止(错几次了)
minSum = Math.min(minSum, sum);
left[i] = max;//保留Max给数组赋值
}
minSum = 0;
sum = 0;
max = Integer.MIN_VALUE;
for(int i = nums.size()-1; i >= 0; i--){
sum += nums.get(i);
max = Math.max(max, sum-minSum);
minSum = Math.min(minSum, sum);
right[i] = max;
}
max = Integer.MIN_VALUE;
for(int i = 0; i < nums.size()-1; i++){
max = Math.max(max, left[i] + right[i+1]);//错开以为
}
return max;
}Last updated