1.题目:输入一个整形数组,数组里面有正数也有负数,数组中一个或者连续的多个整数组成一个子数组。求所有子数组的和的最大值,时间复杂度为O(n).
例如:输入的数组为{1,-2,3,10-4,7,2,-5},则和的最大子数组为{3,10,-4,7,2},因此输出为该子数组的和为18.
思路:
可以设置两个变量,逐向相加数组中的每一项,更新这两个变量的值,当累加的子数组的和不为负值时,继续累加,后面累加的值可能是最大值,当为负值的时候就更新子数组和的值,从当前的数据项开始,每一次都和最大的子数组的和进行比较,为了防止数组中的值都是负数,所以刚开始设置最大的子数组的值是最小的负数值,便于比较更新。