连续子向量的最大和

给一个数组,返回它的最大连续子序列的和.

例如:{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 list=new ArrayList<>();
        for(int i=0;i

 

思路二:

用sum记录累计值,sumest记录和最大 

基于思想:对于一个数A,若是A的左边累计数非负,那么加上A能使得值不小于A,认为累计值对

          整体和是有贡献的。如果前几项累计值负数,则认为有害于总和,sum记录当前值。

此时 若和大于sumest 则用sumest记录下来

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        int sum=array[0];          //注意初始值 不能设为0 防止只有负数
        int sumest=array[0];
        for(int i=1;i

 

你可能感兴趣的:(剑指offer)