这个题目相信很多人都经常遇到,求一个数组的最大子数组和什么的,
首先给你一段数字 1、5、7、-2、-5、0;
让你求最大字段和,从第一个数开始,统计目前累加的数的和是不是大于0 ,如果是大于0 则可以将下一个数字加进去,如果不大于0 就没必要加了,之间从当前的数组开始一次新的累加,每次累加之后就和max进行一下比较,将max保存为最大值
/**
* 获取数组最大字段和
*
* @param array
* @return int
*/
public int getMax(int[] array) {
int all = 0;//用于统计当前的数组和
int max = array[0];//用于统计最大子数组和
for (int i = 0; i < array.length; i++) {
if (all >= 0) {
all += array[i];//累加当前数组的和
} else {
all = array[i];
}
max = Math.max(all, max);//比较当前数组和与最大和之间的大小
}
return max;
}