题目连接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/
这道题有个关键问题需要明白:就是交易次数
由于本题中K要么是0,要么是1。0表示没有进行过交易,1表示进行过交易。那么当持有股票的时候,要么是上一次持有股票,要么是第一次持有股票。
代码:
#include
using namespace std;
class Solution {
public:
int maxProfit(vector<int>& prices) {
int len = prices.size();
int dp[len][2];
memset(dp, 0, sizeof(dp));
dp[0][0] = 0;
dp[0][1] = -prices[0];
for(int i=1; i<len; i++){
dp[i][0] = max(dp[i-1][0], dp[i-1][1]+prices[i]);
dp[i][1] = max(dp[i-1][1], -prices[i]);
}
return dp[len-1][0];
}
};
拜师教育学员文章:作者:1001-高同学,
转载或复制请以 超链接形式 并注明出处 拜师资源博客。
原文地址:《力扣【动态规划】121题》 发布于2022-01-27
评论 抢沙发