下定决心,好好过一天 ~
题目传送
题目思路:简单的dp,注意下边界就行了。当前面的序列为负,那么对后面的序列将是累赘,那么就抛弃前面的序列。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int len = nums.size();
long long dp[100005] = {0};
fill(dp,dp+100005,-1e18);
long long Max = nums[0];
if(nums[0] >= 0)
dp[0] = nums[0];
else
dp[0] = 0;
for(int i = 1;i < len;i++)
{
long long a = dp[i-1] + nums[i];
if(a < 0)
{
Max = max(Max,(long long)(nums[i]));
dp[i] = 0;
}
else
{
dp[i] = dp[i-1] + nums[i];
Max = max(Max,dp[i]);
}
}
return Max;
}
};