利用动态规划的思路, 要求是相邻的一些数,如果要加入的第一个数之前的数小于0,则不加,大于0则加入,更新当前的和,进行下面的比较,然后取出更新之后的最大的数即为所求数据。
如下:
-2 1 -3 4 -1 2 1 -5 4
-2 1 -2 4 3 5 6 1 5
附一下代码
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res=nums[0];
for(int i=1;i<nums.size();i++){
nums[i]+=max(nums[i-1],0);
res=max(res,nums[i]);
}
return res;
}
};