找出数组中连续子序列的最大和 - xiewenfeng/test GitHub Wiki

输入一个整型数组,数组中连续一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组和的最大值。 如输入数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和为18

private int maxSumSubSequence(int[] array) {
        if (array == null) return 0;
        int maxSum = 0, temSum = 0;
        for (int data : array) {
            temSum += data;
            if (maxSum < temSum) {
                maxSum = temSum;
            } else if (temSum < 0) {
                temSum = 0;
            }
        }
        if (maxSum == 0) {
            maxSum = array[0];
            for (int i = 1; i < array.length; i ++) {
                if (array[i] > maxSum) {
                    maxSum = array[i];
                }
            }
        }
        return maxSum;

    }