Given an unsorted integer array, find thesubarraythat has the greatest sum. Return the sum.
Assumptions
- The given array is not null and has length of at least 1.
Examples
- {2, -1, 4, -2, 1}, the largest subarray sum is 2 + (-1) + 4 = 5 
- {-2, -1, -3}, the largest subarray sum is -1 
Solution: prefix sum,largest subarray sum = 当前sum - smallest previous subarray sum,每次更新max和min
  public int largestSum(int[] array) {
    int min = 0, max = array[0], preSum = 0;
    for (int num : array) {
      preSum += num;
      max = Math.max(max, preSum - min);
      min = Math.min(min, preSum);
    }
    return max;
  }
或: 若prevSum > 0,则取prevSum + array[i],否则取array[i]
