class Solution {
public:
int maxProfit(vector<int>& prices) {
int a;
int b;
int sum=0;
int i=0;
while(i<prices.size()-1){
while(i<prices.size()-1&&prices[i]>=prices[i+1]) i++;
a=prices[i];
while(i<prices.size()-1&&prices[i]<=prices[i+1]) i++;
b=prices[i];
sum+=b-a;
}
return sum;
}
};
法二:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int sum=0;
for(int i=1;i<prices.size();i++){
if(prices[i]>prices[i-1]) sum+=prices[i]-prices[i-1];
}
return sum;
}
};
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n=prices.size();
if(n<=1) return 0;
vector<int> a(n,0);
vector<int> b(n,0);
int min_num=prices[0];
for(int i=1;i<n;i++){
a[i]=max(prices[i]-min_num,a[i-1]);
min_num=min(min_num,prices[i]);
}
int max_num=prices[n-1];
for(int i=n-2;i>=0;i--){
b[i]=max(b[i+1],max_num-prices[i]);
max_num=max(max_num,prices[i]);
}
int res=a[n-1];
for(int i=0;i<n-1;i++)
res=max(res,max(a[i],a[i]+b[i+1]));
return res;
}
};
参考一位大神的动态规划