遍历数组统计累加和,如果累加和小于0则统计后面的数时会导致亏损,还不如不加,不加就是将累加和置0。最大的累加和就是答案,用一个变量来记录。

class Solution {
public:
    /**
     * max sum of the subarray
     * @param arr int整型vector the array
     * @return int整型
     */
    int maxsumofSubarray(vector<int>& arr) {
        // write code here
        int max_sum = 0;
        //遍历数组统计累加和,如果累加和小于0则统计后面的数时会导致亏损
        //此时应该将累加和置0;
        int curr_sum = 0;
        for(auto& v: arr)
        {
            curr_sum += v;
            curr_sum = max(curr_sum,0);
            max_sum  = max(max_sum, curr_sum);
        }

        return max_sum;
    }
};