求子数组的最大和

来源:互联网 发布:淘宝店新手该怎么做 编辑:程序博客网 时间:2024/04/28 22:55

要求:输入数组,求其连续子数组最大和,要求时间复杂度为O(n)

思路:容易想到的是O(n^2)和O(n^3)的做法,遍历整个数组。O(n)要求遍历一遍,积累当前遍历的元素,如果>0,则跟已存的最大值相比;如果<0,则舍弃,重新积累。


public static int MaxSum2(int[] a){int maxsum=0;int sum=0;for(int i=0;i<a.length;i++){sum+=a[i];if(sum>maxsum)maxsum=sum;else if(sum<0)sum=0;}return maxsum;}


原创粉丝点击