连续和不连续子数组的最大和

连续:
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
vector<int> dp(array.size(),0);
dp[0]=array[0];
int ans=INT_MIN;
for(int i=1;i<array.size();i++)
{
dp[i]=max(array[i],array[i]+dp[i-1]);
ans=max(ans,dp[i]);
}
return ans;
}
};

不连续:

class Solution {
public:
int rob(vector<int>& nums) {
const int len = nums.size();
if (len == 0) return 0;
if (len == 1) return nums[0];
if (len == 2) return max(nums[0], nums[1]);

    vector<int> dp(len + 1, 0);
    dp[0] = nums[0];
    dp[1] = max(nums[1], nums[0]);
    
    for (int i = 2; i < len; ++i)
    {
        dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
    }
    return dp[len - 1];
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。