看到这个问题我们首先想到的可能是采用暴力解法,使用3个for循环3层遍历,求出每一个子数组的和,然后进行比较求出最大的,但是这样的话时间复杂度就变成O(n^3)了,显然太高了,下面给出一种简便的方法
public int Find_maxsub(int[] array) { if(array.length==0) return 0; int max=array[0]; int sum=0; for(int i=0;i<array.length;i++){ if(sum>=0) sum=sum+array[i]; else sum=array[i]; if(sum>max) max=sum; } return max; }