import java.util.*;
public class MaxSum {
 
  public int getMaxSum(int[] A, int n) {
        // 边界条件:数组为空(n=0)时返回0
        if (n == 0) {
            return 0;
        }
        
        // currentMax:以当前元素为结尾的连续子数组的最大和
        // globalMax:全局的最大连续子数组和
        int currentMax = A[0];
        int globalMax = A[0];
        
        // 从第二个元素开始遍历
        for (int i = 1; i < n; i++) {
            // 选择:要么当前元素单独作为新子数组,要么加入之前的子数组
            currentMax = Math.max(A[i], currentMax + A[i]);
            // 更新全局最大值
            globalMax = Math.max(globalMax, currentMax);
        }
        
        return globalMax;
    }
}
思路:Kadane 算法 即可



京公网安备 11010502036488号