53. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4]
,
the contiguous subarray [4,-1,2,1]
has the largest sum = 6
.
题目链接:https://leetcode.com/problems/maximum-subarray/description/
题目大意:求最大子串和。
解题思路:每次更新临时子串和cur时,考虑到 <0 的部分不能加入临时的子串和cur。
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n = nums.size();
int min_num = (1 << 31) + 1;
int ans = min_num;
int cur = min_num;
for(int i = 0;i < n; i++){
if(cur > 0)
cur += nums[i];
else
cur = nums[i];
if(ans < cur)
ans = cur;
}
return ans;
}
};