题目:
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.empty()) return 0; //要考虑数组为空的情况
vector<vector<int>> dp(prices.size(), vector<int>(2, 0)); //确定动态数组大小和下表含义dp[i][j]:第i天j状态下的利润。其中:j=0代表不持有股票,j=1代表持有股票
dp[0][0]=0; //初始化动态数组,第一天不持有股票和第一天买入股票
dp[0][1]=-prices[0];
for(int i=1;i<=prices.size()-1;i++){
dp[i][0] = max(dp[i-1][0], dp[i-1][1]+prices[i]); //不持有股票两种情况:1.前一天就不持有 2.今天刚卖出
dp[i][1] = max(dp[i-1][1], -prices[i]); //持有股票两种情况:1.前一天就持有 2.今天刚买入
}
return dp[prices.size()-1][0]; //获取最大利润一定是不持有股票的状态
}
};
分类:
算法编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具