思路:
股票可以多次买卖,求最大利润。
我们先设买入价为buy,利润为ret。
那么如果想求最大利润,我们可以考虑赖皮一些,允许反悔,即如果买入价买高了,允许我们反悔,如果股票涨了,允许我们卖出后依然可以持仓,这样就可以保证我们得到最大利润(相当于股票跌了,我们可以反悔,假装之前没有买,而是在当前最低点买入,如果股票涨了,我们可以把股票卖出,但如果股票仍然再涨,我们依然可以反悔,假装之前没有卖,而是在当前最高点买入。简单些说,就是股票跌了,我们不赔,股票涨了,就算我们赚的)
代码:
class Solution {
public:
int maxProfit(vector<int> &prices) {
int n=prices.size();
if(n<2)
return 0;
int buy=prices[0];
int ret=0;
for(int i=1;i<n;++i){
if(prices[i]<buy)
buy=prices[i];
else{
ret+=prices[i]-buy;
buy=prices[i];
}
}
return ret;
}
};