算法训练第四十九天

总结:今日是股票问题的开端,关键是要明白要设置两种状态,一种是未持有股票的状态,一种是持有股票的状态。

122. 买卖股票的最佳时机 II - 力扣(LeetCode)

代码:

class Solution {
public:
    int maxProfit(vector& prices) {
        if(prices.size() == 0 || prices.size() == 1)
        return 0;
        vector> dp(prices.size() + 1,vector(2,0));
        dp[1][0] = -prices[0];//表示持有股票
        dp[1][1] = 0;//表示不持有股票
        for(int i = 2;i <= prices.size();i++)
        {
            dp[i][0] = max(dp[i - 1][0],dp[i - 1][1] - prices[i - 1]);
            dp[i][1] = max(dp[i - 1][1],dp[i - 1][0] + prices[i - 1]);
        }

        return max(dp[prices.size()][0],dp[prices.size()][1]);
    }
};

121. 买卖股票的最佳时机 - 力扣(LeetCode)

代码:

class Solution {
public:
    int maxProfit(vector& prices) {
        if(prices.size() == 0 || prices.size() == 1)
        return 0;

        vector> dp(prices.size() + 1,vector(2,0));
        dp[1][0] = -prices[0];
        dp[1][1] = 0;
        for(int i = 2;i <= prices.size();i++)
        {
            dp[i][0] = max(dp[i - 1][0],-prices[i - 1]);
            dp[i][1] = max(dp[i - 1][1],dp[i - 1][0] + prices[i - 1]);
        }
        return max(dp[prices.size()][0],dp[prices.size()][1]);
    }
};

你可能感兴趣的:(算法)