public class Solution { // DO NOT MODIFY THE LIST. IT IS READ ONLY public int maxSubArray(final List<Integer> A) { if (A.size() == 1) return A.get(0); int[] maxSum = new int[A.size()]; int max = Integer.MIN_VALUE; for (int i = 0; i < A.size(); i ++) { int num = A.get(i); if (i == 0) { maxSum[i] = num; } else { maxSum[i] = Math.max(maxSum[i - 1] + num, num); } max = Math.max(max, maxSum[i]); } return max; } }