本质上与“求数组的子数组之和的最大值”是相同的,只需对求最大值的算法做些修改即可.这里给出一种方法,代码如下:
int minSum(int *arr,int length){
int start=arr[length-1];
int all=arr[length-1];
for(int i=length-2;i>=0;i--){
if(start>0)
start=0;
start+=arr[i];
if(start<all)
all=start;
}
return all;
}
时间复杂度为O(n),不对之处请多多指正。