Loading

【力扣】最大子数组和(贪心)

题目描述

image
贪心算法在构思的时候一般按以下这些步骤来,
1,明确全局最优解,
2.构造一种取得局部最优解的方法,要根据问题具体分析
3.提出反例,就是说尽量想想有没有一些一些情况下,通过局部最优解得不到全局最优解,如果想不到反例的话,则这个贪心策略就是有效的

问题的关键就在于如何找到一种合适的局部最优解取法,使它们堆叠起来能得到全局最优解。
本题中的局部最优解:
image
得到代码如下:

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int res = INT32_MIN;
        int cur = 0;
        for(int i = 0; i < nums.size(); i++){
            cur += nums[i];
            if(cur > res){
                res = cur;
            }
            if(cur < 0){
                cur = 0;
            }
        }
        return res;
    }
};
posted @ 2024-03-10 15:44  SaTsuki26681534  阅读(20)  评论(0)    收藏  举报