class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int res = INT32_MIN; // res 用来存储不带上当前数值的子数组的和
        int ans = INT32_MIN; // 连续子数组最大和
        for(int i = 0; i < array.size(); i++) {
            if(res < 0) // 如果不加上当前元素的时候,连续子数组最大和小于0,则将连续数组最大和更新为当前元素值
                res = array[i];
            else // 相反,加上当前数组
                res = res + array[i]; 
            ans = max(ans, res); // 更新最大连续子数组的最大和
        }
        return ans;
    }
};