题目
题解的dp数组 0列是负数,这里我改成正数不再相加而是相减获取利润
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n=prices.size();
vector<vector<int>>dp(n,vector<int>(2));
dp[0][0]=prices[0];
dp[0][1]=0;
//0列持有股票的最大利润(之前持有,或者刚买入)
//1列没持有股票的最大利润(之前没持有,或者刚卖出)
for(int i=1;i<n;i++)
{
dp[i][0]=min(dp[i-1][0],prices[i]);//买入的股票价值越小,卖出的利润越高
dp[i][1]=max(dp[i-1][1],prices[i]-dp[i-1][0]);//dp[i-1][1]昨天的最大利润
//今天买入股票的利润prices[i]-dp[i-1][0]
}
return dp[n-1][1];
}
};
deepseek 分析