Java Max Double Slice Sum
public class Solution {
public static int maxDoubleSliceSum(int[] a) {
int size = a.length;
if (size < 3) {
return 0;
}
int[] p1 = new int[size];
int[] p2 = new int[size];
p1[1] = 0;
p2[size - 2] = 0;
for (int i = 2; i < size - 1; i++) {
p1[i] = Math.max(0, p1[i - 1] + a[i - 1]);
p2[size - i - 1] = Math.max(0, p2[size - i] + a[size - i]);
}
int sum = p1[1] + p2[1];
for (int i = 1; i < size - 1; i++) {
sum = Math.max(sum, p1[i] + p2[i]);
}
return sum;
}
}
This keeps the best sum ending on the left and starting on the right, then combines them around each middle position.