您的位置:首页 > Web前端

【剑指offer】最大连续连续子数组

2016-09-05 17:40 316 查看
【解题思路】

当数组
a39b
的和为负时候,重新创建子数组

package offerExam;

public class SumOfMaxSubMatrix {
public static void main(String[] args){
int[] array={1,-2,3,10,-4,7,2,-5};
int[] subMatrixIndx={0,0};
//用于存储最大连续子数组的首尾索引值

int result=SumOfMaxSubMatrix(array,subMatrixIndx);
System.out.println(result);
System.out.println("The max sunMatrix is from index "+subMatrixIndx[0]+" to index "+subMatrixIndx[1]);
}

static boolean inputInvalid=false;
private static int SumOfMaxSubMatrix(int[] array, int[] subMatrixIndx) {
if(array==null||subMatrixIndx==null||array.length==0){
inputInvalid=true;
return 0;
}

// TODO Auto-generated method stub
int maxSum=0x80000000;
int curSum=0;
int cur_start=0;
int cur_end=0;
if(array==null||subMatrixIndx==null||array.length==0)
return 0;
for(int i=0;i<array.length;i++){
if(curSum<=0){
curSum=array[i];
cur_start=i;
}
else{
cur_end++;
curSum=curSum+array[i];
}

if(curSum>maxSum)
{
maxSum=curSum;
cur_end=i;

}

}
if(cur_end<=cur_start)
cur_start=cur_end;
subMatrixIndx[0]=cur_start;
subMatrixIndx[1]=cur_end;

return maxSum;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: