【剑指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;
}
}
当数组
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;
}
}
相关文章推荐
- 剑指offer_数组---连续子数组的最大和
- 【剑指offer】连续子数组的最大和
- 剑指offer 面试题31 求连续子数组的最大和
- 【剑指offer】面试题31-连续子数组的最大和问题
- 剑指Offer--031-连续子数组的最大和
- 剑指offer--连续子数组的最大和
- 剑指Offer 31 连续子数组的最大和
- 剑指offer——连续子数组的最大和
- 剑指offer-面试题31:连续子数组的最大和
- 剑指offer 30 连续子数组的最大值
- 【剑指offer】题31:最大连续数组之和
- 剑指offer:连续子数组的最大和
- [剑指offer]连续子数组的最大和
- 剑指offer-31:连续子数组的最大和
- 【剑指offer】连续子数组的最大和
- 剑指offer面试题31:连续子数组的最大和
- 剑指offer面试题[31]-连续数组的最大和
- 【剑指offer】连续子数组的最大和
- 剑指offer之连续子数组的最大和(Python)
- 剑指offer-第五章优化时间和空间效率(连续子数组的最大和)