思路:动态规划,
dp1是当前第一次买入的最大值
dp2是当前第一次卖出的最大值
dp3是当前第二次买入的最大值
dp4是当前第二次卖出的最大值
转移看代码:
class Solution {
public:int maxProfit(vector<int>& prices) {int dp1=-0x3f3f3f3f,dp2=-0x3f3f3f3f,dp3=-0x3f3f3f3f,dp4=0;for(int v:prices){dp4=max(dp4,dp3+v);dp3=max(dp3,dp2-v);dp2=max(dp2,dp1+v);dp1=max(dp1,-v);}return max(dp4,dp2);}
};