題目描述
貪心演算法在構思的時候一般按以下這些步驟來,
1,明確全域性最優解,
2.構造一種取得區域性最優解的方法,要根據問題具體分析
3.提出反例,就是說盡量想想有沒有一些一些情況下,透過區域性最優解得不到全域性最優解,如果想不到反例的話,則這個貪心策略就是有效的
問題的關鍵就在於如何找到一種合適的區域性最優解取法,使它們堆疊起來能得到全域性最優解。
本題中的區域性最優解:
得到程式碼如下:
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;
}
};