刷题之买股票的最佳时机(leetcode)

买股票的最佳时机

动态规划入门题。

最简单的模拟式解法:

cpp 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //也可以换一种思路,因为只交易一次,那么找出股票最便宜的时候买入,最贵的时候卖出,最大利润为(该天的股价-前面天数中最小的股价)
        int profit=0;
        int cost=prices[0];
        for(int i=1;i<prices.size();i++)
        {
            profit=max(prices[i]-cost,profit);
            cost=min(prices[i],cost);
        }
        return profit;
    }
};

动态规划解法:

cpp 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<vector<int>>dp(prices.size(),vector<int>(2,0));
        dp[0][0]=0;
        dp[0][1]=-prices[0];
        for(int i=1;i<prices.size();i++)
        {
            //只能交一次易
            //第i天没有持有股票的最大利润为前一天没有持有股票,并且第i天也没有买入;第i-1天有,但今天卖出
            dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i]);
            //第i天持有股票的最大利润是:前一天有股票,第i天没有卖出,或者第i天买入
            dp[i][1]=max(dp[i-1][1],-prices[i]);
        }
        return dp[prices.size()-1][0];
    }
};
相关推荐
长安er8 分钟前
LeetCode 01 背包 & 完全背包 题型总结
数据结构·算法·leetcode·动态规划·背包问题
小南家的青蛙11 分钟前
LeetCode第2658题 - 网格图中鱼的最大数目
算法·leetcode·职场和发展
夏鹏今天学习了吗2 小时前
【LeetCode热题100(73/100)】买卖股票的最佳时机
算法·leetcode·职场和发展
Voyager_42 小时前
算法学习记录17——力扣“股票系列题型”
学习·算法·leetcode
XFF不秃头3 小时前
【力扣刷题笔记-在排序数组中查找元素的第一个和最后一个位置】
c++·笔记·算法·leetcode
im_AMBER4 小时前
Leetcode 79 最佳观光组合
笔记·学习·算法·leetcode
练习时长一年4 小时前
在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
资深web全栈开发4 小时前
LeetCode 3573. 买卖股票的最佳时机 V - 动态规划解法详解
算法·leetcode·动态规划
Chen--Xing4 小时前
LeetCode LCR 119.最长连续序列
c++·python·算法·leetcode·rust
sheeta19985 小时前
LeetCode 每日一题笔记 日期:2025.12.17 题目:3573.买卖股票的最佳时机Ⅴ
笔记·算法·leetcode