LeetCode/solutions/53. Maximum Subarray.md
2020-02-09 19:32:49 +08:00

26 lines
873 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [53. Maximum Subarray](https://leetcode.com/problems/maximum-subarray/description/)
# 思路
就是一个简单的动态规划。从前往后遍历一遍用currsum记录以当前位置为结尾的最大子序列和。可见currsum要么等于nums[i]本身要么等于nums[i]加上上一个currsum即更新准则为
* 如果currsum大于0那么`currsum += nums[i]`
* 否则,则`currsum = nums[i]`。
时间复杂度O(n)空间复杂度O(1)
# C++
``` 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;
}
};
```