动态规划,第i天能获得的最大利润为第i-1天能获得的最大利润+prices[i]-prices[i-1],如果该值小于0,则该天的最大收益是0,不买卖股票.
int maxProfit(vector<int>& prices) {
int pmax=0,pcur=0;
for(int i=1;i<prices.size();++i){
pcur+=prices[i]-prices[i-1];
pcur=pcur>=0?pcur:0;
if(pcur>pmax)
pmax=pcur;
}
return pmax;
}
动态规划 前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}
int maxProfit(vector<int>& prices) {
int pmax=0,pmin=INT_MAX;
for(int i=0;i<prices.size();++i){
pmin=min(prices[i],pmin);
pmax=max(prices[i]-pmin,pmax);
}
return pmax;
}