数组最大连续和 max sum

来源:互联网 发布:深圳水务集团网络投诉 编辑:程序博客网 时间:2024/06/16 22:33

看了一下最大连续和的几个问题。

现在记下O(n)的算法

要保证数组的一段连续数字的和是最大,首先要保证当前的和不是负数。

O(n)的算法就是基于此。


设一个数组a[n] = { -1, -2 , 6 , -7, 9, 4};

标示下标两个,head和tail。

一个全局变量max,用于缓存当前最大的数和,初始化为0。

那么首先-1 -2会被pass掉。head指向6,max也就是现在的6,所以tail也指向当前的6

接下来加上-7,这个一定会加上,因为6是非负数。这个时候和是-1,比max小,所以不用缓存。

接下来遇到9,刚刚已经是负数,所以要重新开始,可以使用一个headTmp来纪录目前的下标。然后max需要更新为9,就把head改为headTmp,tail改为指向当前的9


接下来就十分的简单了。