代码随想录算法【Day40】
1.dp数组及下标定义:dp[i][0]:表示持有该股票得到的最大现金;dp[i][1]:表示不持有该股票得到的最大现金;所以dp[0][1] = 0。4.遍历顺序:从前到后遍历。
·
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.数组的数据应该是怎样的:
更多推荐
所有评论(0)