个人技术分享

题干:

代码:

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int res = INT_MIN;
        int count = 0;
        for(int i = 0; i < nums.size(); i++){
            count += nums[i];
            if(count > res) res = count;
            if(count <= 0)count = 0;
        }
        return res;
    }
};

局部最优:只要连续和大于0就一直遍历加下去,直到为0或小于0时再以下一个数为起点往下加。而令count=0实现了这一要求。

最大子序列可以包含负数,只要连续和是正数就行了。