class Solution { public: int maxSubArray(vector& nums) { int res = INT_MIN; int tempSum = 0; if(nums.empty()) { return res; } for(int i = 0; i < nums.size(); ++i) { tempSum += nums[i]; res = max(res, tempSum); if(tempSum <= 0)//如果累加和遇到负数,则将累加和置0,并重新计算累加和 { tempSum = 0; } } return res; } };
DP:
class Solution { public: int maxSubArray(vector& nums) { if(nums.size()==1) { return nums[0]; } vector dp(nums.size(),0);//dp[i]:包括下标i之前的最大连续子序列和为dp[i] dp[0]=nums[0]; int res=dp[0]; for(int i=1;i res)//保存最大值 { res=dp[i]; } } return res; } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)