看了一下最大连续和的几个问题。
现在记下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
接下来就十分的简单了。