力扣第40天----第121题、第122题

力扣第40天----第121题、第122题

文章目录

一、第121题--买卖股票的最佳时机

​ 分2种情况考虑,根据持有股票、不持有股票这2种情况,完成递推公式。另外,这里要求只买卖一次,所以买入的前一个状态一定是手里现金为0。

c++ 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {    //0表示不持有, 1表示持有
        vector<vector<int>> dp(2, vector<int>(prices.size(), 0));
        dp[0][0] = 0;
        dp[1][0] = -prices[0];
        for(int i =1; i<prices.size(); ++i){
            dp[0][i] = max(dp[0][i-1], dp[1][i-1] + prices[i]);
            dp[1][i] = max( - prices[i], dp[1][i-1] );  //这里控制,只买卖一次。如果是别的值(不是0),就是买卖多次。
        }
        return dp[0][prices.size() - 1];
    }
};

二、第122题--买卖股票的最佳时机II

​ 跟上一题,基本一样。可以买卖多次,那么买入的前一个状态,手里可以有现金,要根据前一个状态手里现金数,再做处理。

c++ 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {    //0表示不持有, 1表示持有
        vector<vector<int>> dp(2, vector<int>(prices.size(), 0));
        dp[0][0] = 0;
        dp[1][0] = -prices[0];
        for(int i =1; i<prices.size(); ++i){
            dp[0][i] = max(dp[0][i-1], dp[1][i-1] + prices[i]);
            dp[1][i] = max(dp[0][i-1] - prices[i], dp[1][i-1] );
        }
        return dp[0][prices.size() - 1];
    }
};
相关推荐
qq_85730581921 分钟前
python语法
开发语言·python·算法
DXM052138 分钟前
第9期|从机器学习到深度学习:AI遥感解译的进化逻辑
人工智能·算法·计算机视觉
小蒋学算法1 小时前
算法-阶乘函数后K个零
算法
weixin_307779131 小时前
智能模拟数据生成平台:生成式AI合成数据技术重塑开发测试效能
人工智能·测试工具·算法·测试用例
羊羊小栈2 小时前
Uplift营销供应链协同决策系统(基于Uplift因果推断与运筹优化算法)
前端·人工智能·算法·毕业设计·大作业
金融小师妹2 小时前
AI因子共振模型显示:金银比突破区间上沿,白银定价逻辑进入再校准阶段
人工智能·算法·均值算法·线性回归
J2虾虾2 小时前
C语言 typedef 用法
c语言·数据结构·算法
hunterkkk(c++)3 小时前
线段树例题
算法
故渊at3 小时前
第二板块:Android 四大组件标准化学理 | 第七篇:Activity 页面载体与任务栈算法
android·算法·生命周期·activity·任务栈
兰令水3 小时前
leecodecode【区间DP+树形DP】【2026.6.10打卡-java版本】
java·算法·leetcode