剑指offer 31. 连续子数组的最大和

xiaoxiao2021-02-27  127

//题目:输入一个数组,输出这个数组的连续子数组的最大和 //如果已有最大和小于0,则与当前数字相加的结果比这个数字更小,所以可以直接舍弃之前的结果,当前的最大子数组和就是这个元素的值 public class Main { public static void main(String[] args) throws Exception { System.out.println(getMaxSum(new int[]{1,-2,3,10,-4,7,2,-5})); } public static int getMaxSum(int[] input){ int sum = Integer.MIN_VALUE; int maxResult = Integer.MIN_VALUE; for(int i = 0;i<input.length;i++){ if(sum<0){ //sum是以当前元素为最后一个元素的最大子数组之和 sum = 0; } sum = sum+input[i]; if(sum>maxResult){ //maxResult记录所有历史中的最大子数组之和 maxResult = sum; } } return maxResult; } }
转载请注明原文地址: https://www.6miu.com/read-16304.html

最新回复(0)