public class HuaWeiTest6 {
/*
* 一个整形数组中有正数也有负数,
* 数组中连续一个或多个组成子数组,
* 每个子数组都有一个和,
* 求所有子数组中和的最大值
* 输入{ 1, -2, 3, 10,-4, 7, 2, -5 };
* 输出 18
* 基于思想:对于一个数A,若是A的左边累计数非负,那么加上A能使得值不小于A,认为累计值对
* 整体和是有贡献的。如果前几项累计值负数,则认为有害于总和,total记录当前值。
* 此时 若和大于maxSum 则用maxSum记录下来
*
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int input[] = { 1, -2, 3, 10, -4, 7, 2, -5 };
int input1[] = { 6, -3, -2, 7, -15, 1, 2, 2 };
int input2[]={};
System.out.println(FindGreatestSumOfSubArray(input1));
}
public static int FindGreatestSumOfSubArray(int[] array) {
if (array.length == 0) {
return 0;
}
if (array.length > 0) {
int need = array[0];
int Maxneed = array[0];
for (int i = 1; i < array.length; i++) {
if (need < 0) {
need = array[i];
} else {
need += array[i];
}
if (need > Maxneed) {
Maxneed = need;
}
}
return Maxneed;
}
return 0;
}
}
一个整形数组中有正数也有负数, 数组中连续一个或多个组成子数组,每个子数组都有一个和, 求所有子数组中和的最大值
最新推荐文章于 2022-01-11 10:16:18 发布