找出最大子数组的和,其实这是个经典的问题,也就是说数组可以分为很多子数组,当然本身也是自己的子数组。看了很多大神的解法,什么暴力法,动态规划法,很多,但是代码量很多,也很难理解。根据我的理解,其实一个数组如果全都是大于0的数,那么,最大子数组的和就是本身各个元素的和,但是如果数组中有负数,那就有些麻烦。换个角度讲,其实也很简单,那就是将大于0的元素加起来不就ok了吗,那么时间复杂度为O(n),来,上代码。
/**
* 找出最大子数组的和
*
* @Author lrf
* @Date 2019/05/27 23:16:31
* @Version 1.0.0
**/
public class MaxSubArray {
private static int getMaxSubArray(int[] arr) {
int re=0;
for (int i = 0; i < arr.length; i++)
if (arr[i]>0) re = re+arr[i];
return re;
}
public static void main(String[] args) {
int[] arr = {2,5,-2,-9,-10,-23,10,11,4};
System.out.println("arr最大子数组的和为:"+getMaxSubArray(arr));
}
}