参考:
(1)点击打开链接
class Solution {
public:
int maxProfit(vector<int>& prices) {
int len = prices.size();
//为了第一次买操作的不取prebuy,buy取系统最小值,这样就是之前卖的总值减去当前价格就是这次买的手里的价格
int prebuy = 0 , sell = 0 , buy = INT_MIN , presell = 0;;
// int i = 0;
for (int price : prices) {
prebuy = buy;
//当前操作是买,则需在之前卖出的数额(presell)里减去当前值,和在当前买入操作之前的上一次买入操作的手里数额相比取较大的值
//这个取上次买操作的值就相当于当前操作时rest,也就是冰冻日不操作。
buy = max(presell - price , prebuy);
presell = sell;
//当前操作是卖,则需在之前买入的数额(prebuy)
//里加上此次卖出的数额,只是个逆序操作,和在当前卖出操作的上次卖出操作时手里的价格比较取较大的值。
//这个取上次卖操作的值就相当于当前操作时rest,也就是冰冻日不操作。
sell = max(prebuy + price , presell);
}
return sell;
}
};