【力扣】最大子陣列和(貪心)

SaTsuki26681534發表於2024-03-10

題目描述

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;
    }
};

相關文章