java 求出连续子数组和为最大值的子数组信息

public static void main(String[] args) {
    int[] arr = {-2,1,-3,4,-1,2,1,-5,4};
    int max=arr[0]; //连续n项相加值最大的子数组和
    int maxStartIndex = 0;//连续n项相加值最大的子数组起始索引
    int maxEndIndex = 0;//连续n项相加值最大的子数组终止索引
    int sum=arr[0];//连续n项子数组和
    int sumStartindex = 0;//子数组起始索引
    int sumEndIndex = 0;//子数组终止索引

    for(int i=1;i max){//当连续子数组和大于最大值子数组和时,修改最大值子数组信息
                max = sum;
                maxEndIndex = i; sumEndIndex = i;
            }else{//当连续子数组和小于最大值子数组时,记录连续子数组的终止索引信息
                sumEndIndex = i;
            }

        }
    }
    System.out.println("最大和:"+max+" startIndex:"+maxStartIndex+" endIndex:"+maxEndIndex );
}

打印结果:最大和:6 startIndex:3 endIndex:6

 

 

你可能感兴趣的:(java)