public int maxSubArray(int[] A) {
        if(A.length == 0)
            return 0;
        int max = A[0];
        int cur = A[0];
        for(int i = 1; i< A.length;i++){
            cur = Math.max(cur + A[i],A[i]); // 如果 cur + A[i] < A[i]的时候，表示cur 为负数，负数不可能是最大值的前缀。
            max = Math.max(cur,max);
        }
        return max;
    }