概述
将这个连续子数组分为两部分,一个是前缀,一个是后一个元素,要使这个连续子数组最大,那么它的前缀肯定不能为负,不然这个前缀对即将加上的值就无意义,用一个max记录最大值,每次当前缀加上后一个元素的时候判断和是否大于max,大于则更新max,再判断和是否小于0,小于0则将前缀更新为0,继续加下一个元素,依次类推,直到数组末尾,max即为最大子数组和。代码如下:
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
if(array.length==0){
return 0;
}
int max = array[0];
int current = array[0]<0?0:array[0];
for(int i=1;i<array.length;i++){
current += array[i];
if(current>max){
max = current;
}else if(current<0){
current = 0;
}
}
return max;
}
}
最后
以上就是老迟到小蝴蝶为你收集整理的给定一个数组,找出这个数组最大连续子数组的和的全部内容,希望文章能够帮你解决给定一个数组,找出这个数组最大连续子数组的和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复