贪心算法-最大子序和

问题描述

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

链接:https://leetcode-cn.com/probl...

解题思路

循环整个数组,判断每个元素是否可能被添加到一个可能成为最大子序列和的子序列之中。
判断条件为,当前元素与上一个元素之和要大于当前元素(说明上一个元素不为负数,则上一个元素可能是子序列元素),若满足则将当前元素修改为两元素之和。否则就不修改i位置元素。即arr[i]=max{arr[i], arr[i]+arr[i-1]}
我们另max=nums[0],然后直接从第二个元素遍历。

代码

class Solution {
public:
    int maxSubArray(vector& nums) {
        int maxsub = nums[0];
        for (int i=1; inums[i]+nums[i-1]?nums[i]:nums[i]+nums[i-1];
            maxsub = nums[i]>maxsub?nums[i]:maxsub;
        }
        return maxsub;
    }
};

你可能感兴趣的:(leetcode,贪心算法,数组)