import java.util.*;
public class Solution {
/**
* max sum of the subarray
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxsumofSubarray (int[] arr) {
if (arr.length == 0) {
return arr[0];
}
int max = arr[0];
int sum = arr[0];
/***
* 该题的本质是一个个往后累加,若过程中累加和小于0,那么就需要将前面的数都舍掉,继续重新从下一个数累加,
* 过程中需要保存累加的最大值,若加上后一个数大于前面的值,则对最大值重新赋值,反之则不变。
*/
for (int i = 1; i < arr.length; i++) {
if (sum < 0) {
sum = arr[i];
} else {
sum = sum + arr[i];
}
max = Math.max(max, sum);
}
return max;
}
}


京公网安备 11010502036488号