解题:
1.我的动态规划
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n=nums.size();
int *dp=new int[n];
dp[0]=nums[0];
int sum=dp[0];
for(int i=1;i<n;i++){
if(nums[i]>nums[i]+dp[i-1])
dp[i]=nums[i];
else dp[i]=nums[i]+dp[i-1];
sum=max(sum,dp[i]);
}
return sum;
}
};
2.他人的动态规划
其实也不用定义一个数组dp[n]来存放局部最大
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum=nums[0];
int a=nums[0];
for(int i=1;i<nums.size();i++){
sum=max(nums[i],nums[i]+sum);
a=max(a,sum);
}
return a;
}
};