代码随想录:买卖股票的最佳时机

class Solution {
public:
//股票题目本质是状态转移的DP
//列举每天的各种状态,递推DP数组
    int maxProfit(vector<int>& prices) {
        vector<vector<int>> dp = vector<vector<int>>(prices.size(),vector<int>(2,0));
        //dp[i][0]表示这天持有股票手上的最大金额,dp[i][1]表示不持有
        dp[0][0] = -prices[0];
        dp[0][1] = 0;
        for(int i =1;i<prices.size();i++){
            dp[i][0] = max(dp[i-1][0],-prices[i]);//前者为今天无作为,后者为今天刚买入
            dp[i][1] = max(dp[i-1][1],prices[i]+dp[i-1][0]);//前者为无作为,后者为今天卖出
        }
        return dp[prices.size()-1][1];
    }
};
posted @ 2025-02-25 20:36  huigugu  阅读(10)  评论(0)    收藏  举报