public int maxTwoSubArrays(ArrayList<Integer> nums) {
       if (nums == null) return 0;
       int max = Integer.MIN_VALUE;
       int minSum = 0;
       int sum = 0;
       int size = nums.size();
       int[] left = new int[size];
       int[] right = new int[size];
       for (int i = 0; i < size; i++) {
           sum += nums.get(i);
           max = Math.max(max, sum - minSum);
           minSum = Math.min(minSum, sum);
           left[i] = max;
       }
       max = Integer.MIN_VALUE;
       minSum = 0;
       sum = 0;
       for (int i = 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 < size - 1; i++) {
           max = Math.max(max, left[i] + right[i + 1]);
       }
       return max;
    }

results matching ""

    No results matching ""