最长子序和问题;动态规划
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
/*
题目描述:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
思考:动态规划。memo[i]表示以i为结尾的子数组和的最大值。
memo[i]=max(memo[i-1]+nums[i],nums[i])
*/
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n=nums.size();
if(n==0){
return 0;
}
vector<int> memo(n,-9999);
memo[0]=nums[0];
for(int i=1;i<n;i++){
memo[i]=max(memo[i-1]+nums[i],nums[i]);
}
int addmax=memo[0];
for(int i=0;i<n;i++){
if(memo[i]>addmax){
addmax=memo[i];
}
}
return addmax;
}
};
int main(){
return 0;
}