mirror of
https://github.com/ShusenTang/LeetCode.git
synced 2024-09-02 14:20:01 +00:00
778 B
778 B
53. Maximum Subarray
思路
从前往后遍历一遍,用currsum记录以当前位置为结尾的最大子序列和。可见currsum要么等于nums[i]本身,要么等于nums[i]加上上一个currsum,即更新准则为:
如果currsum大于0,那么currsum += nums[i];
否则currsum = nums[i]
C++
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxsum = nums[0]; // at least one number
int currsum = nums[0];
for(int i = 1; i < nums.size(); i++){
if(currsum > 0) currsum += nums[i];
else currsum = nums[i];
if(currsum > maxsum) maxsum = currsum;
}
return maxsum;
}
};