JZ30 连续子数组的最大和
描述
输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).
示例1
输入:
[1,-2,3,10,-4,7,2,-5]
返回值:
18
说明:
输入的数组为{1,-2,3,10,—4,7,2,一5},和最大的子数组为{3,10,一4,7,2},因此输出为该子数组的和 18。
================================================================================================================================
解题思路:
我的思路是先判断这个数字大不大0,小于0的话呢,判断是当前的数字大,还是之前的和的数字大,然后更新最大数;大于0的话呢,之前数字的和继续往后加,但是要判断是之前和的数字大,还是现在加了这个数字大。比较复杂
看到讨论板上有更简单的做法,之前比较之前的数字加上当前数字大,还是当前数字大。然后再用这个数字和当前最大的子序列和进行比较,不需要判断多次这个数大于0还是小于0;