/**
* 最大连续子数组和
*
* @param arr
* @return
*/
private static int maxSubArray(int[] arr) {
//当前最大子数组和
int curSum = 0;
//最终最大子数组和
int maxSum = arr[0];
//遍历数组,对第 i 个元素,要么放进子数组中,要么作为新数组的第一个元素
//若 curSum + arr[i] 不小于 arr[i],则 arr[i] 可放入子数组中,且 curSum 加上 arr[i]
//否则 arr[i] 作为新数组的第一个元素,curSum = arr[i]
//判断 curSum 和 maxSum, 若 curSum > maxSum,则更新 maxSum,否则保持原值不变
for(int i = 0; i < arr.length; i++) {
curSum = (arr[i] > arr[i] + curSum) ? arr[i] : arr[i] + curSum;
maxSum = (curSum > maxSum ? curSum : maxSum);
}
//返回最终最大子数组和
return maxSum;
}