DP——Maximum Subarray

来源:互联网 发布:防arp攻击软件 编辑:程序博客网 时间:2024/06/05 11:09

问题描述:

在数组中找到连续的子列(包含至少一个数字),使其和最大。

解题思路:

声明一个sum数组,用来记录当前连续子列的最大和。key:如果当前元素加上sum[i-1],比本身的数值要小的话,则选取当前元素的数值作为sum[i]

源代码:

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        vector<int> sum;
        sum.push_back(nums[0]);
        for(int i=1;i<nums.size();i++)
        {
            if(nums[i]>sum[i-1]+nums[i]) sum.push_back(nums[i]);
            else sum.push_back(sum[i-1]+nums[i]);
        }
        int max=sum[0];
        for(int i=0;i<sum.size();i++)
            if(max<sum[i]) max=sum[i];
        return max;
    }
};
0 0
原创粉丝点击