public int FindGreatestSumOfSubArray(int[] array) {
        //dp[i] 以 i 结尾的数组最大和
        if(array == null){
            return 0;
        }
        if(array.length == 1){
            return array[0];
        }
//         int[] dp = new int[array.length];
//         dp[0] = array[0];
//         int result = array[0];
        
//         for(int i = 1;i < array.length - 1; i++){
//             dp[i] =  Math.max(dp[i-1] +array[i], array[i]);
//             result = Math.max(dp[i],result);
//         }
//         return result;
        int result = 0;
        int temp = 0;
        int max = Integer.MIN_VALUE;
        for(int i = 0;i<array.length;i++){
            result += array[i];
            if(result > max){
                //累加后发现大于
                max = result;
            }
            if(result < 0){
                //累加小于0,重置 ,如果不重置,后面累加如果数字为负数,将更小,为正数,也变小,不如不加,这样还大,直接取后面的数
                result = 0;
            }
        }
        return max;

    }
}