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

来源:互联网 发布:知乎 家庭交换机 编辑:程序博客网 时间:2024/04/30 09:13

【解题思路】

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

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 stubint 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;}}


0 0