思路:
股票可以多次買賣,求最大利潤。
我們先設(shè)買入價(jià)為buy,利潤為ret。
那么如果想求最大利潤,我們可以考慮賴皮一些,允許反悔,即如果買入價(jià)買高了,允許我們反悔,如果股票漲了,允許我們賣出后依然可以持倉,這樣就可以保證我們得到最大利潤(相當(dāng)于股票跌了,我們可以反悔,假裝之前沒有買,而是在當(dāng)前最低點(diǎn)買入,如果股票漲了,我們可以把股票賣出,但如果股票仍然再漲,我們依然可以反悔,假裝之前沒有賣,而是在當(dāng)前最高點(diǎn)買入。簡單些說,就是股票跌了,我們不賠,股票漲了,就算我們賺的)
代碼:
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;
}
};