解题思路:
记录两个状态:
1,当前,有股票时候的最大收益 havStock = max(havStock, nonStock - prices[i])
2,当前,没有股票时候的最大收益 nonStock = max(nonStock, havStock + prices[i])
状态转移公式已经列在上面了。
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size() == 0) return 0;
int nonStock = 0;
int havStock = -prices[0];
for(int i = 1; i < prices.size(); ++i){
nonStock = max(havStock + prices[i], nonStock);
havStock = max(havStock, nonStock - prices[i]);
}
return max(nonStock, havStock);
}
};