leetcode:123. 买卖股票的最佳时机 III(区间dp,困难)

    科技2022-08-16  110

    题目:

    分析:A【i】表示i之前进行一次买卖的最大获益,B【j】表示j之后进行一次买卖的最大获益。

    我都要感叹自己太强了,很好的分析!

    代码:

    class Solution { public: int maxProfit(vector<int>& p) { // vector<int> p; vector<int> A(p.size(),0);//0-i vector<int> B(p.size(),0);//i-结束 int minn=p[0]; for(int i=1;i<p.size();i++) { minn=min(minn,p[i]); A[i]=max(A[i-1],p[i]-minn); //cout<<i<<' '<<A[i]<<endl; } int maxx=p[p.size()-1]; for(int i=p.size()-2;i>=0;i--) { maxx=max(maxx,p[i]); B[i]=max(B[i+1],maxx-p[i]); //cout<<i<<' '<<A[i]<<endl; } maxx=max(B[0],A[p.size()-1]); //cout<<maxx<<' '<<B[0]<<' '<<A[p.size()-1]; for(int i=1;i<p.size()-1;i++) { maxx=max(maxx,max(0,A[i])+max(0,B[i+1])); } return maxx; } };
    Processed: 0.017, SQL: 9