考察点
数组
知识点
题目
分析
本题目要求连续子数组的最大和,遇到这种问题,思路都是一样,通过归纳法找到规律,再用算法描述出来。连续数组1,-2,3,10,-4,第一个第二个元素累加起来已经是-1了,在加第三个元素(无论是正数还是负数)的和肯定要比第三个元素本身要小,所以发生子数组的和小于0的时候就要重新考虑新的子数组了
public class ThirtyOne {
public static void main(String[] args) {
int[] arr = {1,-2,3,10,-4,7,2,-5};
System.out.println(getMax(arr));
}
public static int getMax(int[] args) {
int mx = Integer.MIN_VALUE;
int sum = 0;
for (int i = 0;i<args.length;i++) {
sum = sum + args[i];
if (sum < 0) {
sum = 0;
}
if (sum > mx) {
mx = sum;
}
}
return mx;
}
}