算法題之——連續子數組最大和


Java算法題之——連續子數組最大和

題目描述:
輸入一個整形數組,數組里有正數也有負數。
數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。
求所有子數組的和的最大值。要求時間復雜度為O(n)。

例如輸入的數組為1, -2, 3, 10, -4, 7, 2, -5,和最大的子數組為3, 10, -4, 7, 2,
因此輸出為該子數組的和18。

代碼:

//時間復雜度為O(n)
public static void maxSum(int a[]){
int max = a[0];
int sum = 0;
for(int i=0;i<a.length;i++){
sum+=a[i];
if(sum>max){
max = sum;
}else if(sum<0){
sum = 0;
}
}
System.out.println(max);
}

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com