LeetCode 刷题 [C++] 第121题.买卖股票的最佳时机

题目描述

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

题目分析

对题目进行分析可知,买卖股票的最佳时机是由之前买或不买的状态决定的,而之前买或不买又由更早的状态决定的。因此,可以通过动态规划的思路来分析。

  1. 更新前i天的最低价格;
  2. 由于需要使得利益最大化,因此,使用dp[i]表示前i天的最大利润;
  3. 且dp[i]等于dp[i−1] 和第 i天卖出的最高利润中的最大值 。

Code

cpp 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int size = prices.size();
        if (0 == size) {
            return 0;
        }
        int min_price = prices[0];
        vector<int> dp(size, 0);
        for (int i = 1; i < size; ++i) {
            min_price = min(min_price, prices[i]);
            dp[i] = max(dp[i - 1], prices[i] - min_price);
        }
        return dp[size - 1];
    }
};
相关推荐
微凉的衣柜1 分钟前
【3D 打印避坑实录】如何用 Blender 彻底修复空壳 STL
c++·3d·blender
敲代码敲到头发茂密1 分钟前
C++之运算符&循环
开发语言·c++
胖咕噜的稞达鸭6 分钟前
算法日记:模拟(提莫攻击,替换所有的问号,Z字形变换,外观数列,数青蛙)
算法
YGGP7 分钟前
【Golang】LeetCode 234. 回文链表
leetcode·链表·golang
高洁017 分钟前
【无标题】
人工智能·深度学习·算法·机器学习·transformer
菩提祖师_7 分钟前
基于大数据的电力负荷预测与调度研究
java·开发语言·网络·c++·物联网
小龙报11 分钟前
【算法通关指南:数据结构与算法篇】破局二叉树!特殊结构 + 双重存储 + 遍历算法,一文吃透所有核心
c语言·数据结构·c++·算法·知识图谱·信息与通信·visual studio
独自破碎E13 分钟前
Leetcode839相似字符串组
java·开发语言·leetcode
DeepVis Research19 分钟前
【NLP/Microservices】2026年度语义逻辑编译与分布式微服务架构基准索引 (Benchmark Index)
算法·微服务·自然语言处理·架构·数据集·编译原理
vx:Oct-w771 小时前
毕业设计----用python制作的古诗词拼接接龙游戏
数据结构·python·sql·算法·游戏·pycharm