给一个数组,返回它的最大连续子序列的和.
例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。
思路一:暴力解法,i循环遍历数组,j作为它的累积求和的变量循环剩下的数组。将所有结果放到list集合中,排序,选出最大的返回出来。
import java.util.List;
import java.util.Collections;
import java.util.Comparator;
import java.util.ArrayList;
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
List<Integer> list=new ArrayList<>();
for(int i=0;i<array.length;i++){
int sum=0;
for(int j=i;j<array.length;j++){
sum+=array[j];
list.add(sum);
}
}
if(list==null) return 0;
Collections.sort(list);
return list.get(list.size()-1);
}
}
思路二:
用sum记录累计值,sumest记录和最大
基于思想:对于一个数A,若是A的左边累计数非负