給定一個整數(shù)數(shù)組 nums ,找到一個具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個元素)饶火,返回其最大和鹏控。
輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續(xù)子數(shù)組 [4,-1,2,1] 的和最大,為 6肤寝。
解法:這是個簡單題,在解的時候只要考慮到當前子序和為正抖僵,就會對后續(xù)和有疊加作用鲤看。因此,只要記錄已經(jīng)找到的最大和耍群,然后向后搜索义桂,只要當前和為負值,就將其拋棄蹈垢,重新開始慷吊。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
if(nums.size() == 0) {
return 0;
}
if(nums.size() == 1) {
return nums[0];
}
int sum = nums[0];
int temp = sum;
for(int i=1; i<nums.size(); i++) {
if(temp < 0 ) {
temp = nums[i];
}
else {
temp = temp + nums[i];
}
if(temp > sum) {
sum = temp;
}
}
return sum;
}
};