Day40
121. 买卖股票的最佳时机
class Solution { public:int maxProfit(vector<int>& prices) {int len = prices.size();if (len == 0) return 0;vector<vector<int>> dp(len, vector<int>(2));dp[0][0] -= prices[0];dp[0][1] = 0;for(int i = 1; i < len; 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[len - 1][1];} };
五部曲
1.dp数组及下标定义:dp[i][0]:表示持有该股票得到的最大现金;dp[i][1]:表示不持有该股票得到的最大现金;
2.递推公式:
dp[i][0] = max(dp[i - 1][0], -prices[i]);
dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0]);
3.初始化:
dp[0][0] -= prices[0];所以dp[0][1] = 0
4.遍历顺序:从前到后遍历
5.数组的数据应该是怎样的: