求连续子数组的最大和
很简单,做过这个题。记得那个关键的点是,前面那个dp[i-1]如果是一个负数,则它对后面的 值就没有“贡献”,就不用加了。
lass Solution {
public:
int maxSubArray(vector<int>& nums) {
int size=nums.size();
int *dp=new int[size];
dp[0]=nums[0];
int max=nums[0];
for(int i=1;i<size;i++)
{
if(dp[i-1]<=0)
{
dp[i]=nums[i];
}
else if(dp[i-1]>0)
{
dp[i]=dp[i-1]+nums[i];
}
if(dp[i]>max)
{
max=dp[i];
}
}
return max;
}
};
fllow up 如何用分治的思想实现???