当前位置: 首页 > news >正文

【LeetCode 动态规划】买卖股票的最佳时机问题合集

文章目录

      • 1. 买卖股票的最佳时机含冷冻期
      • 2. 买卖股票的最佳时机Ⅳ ---- 只允许交易 k 次🖊

1. 买卖股票的最佳时机含冷冻期

题目链接🔗
在这里插入图片描述


  • 🍎题目思路:
    在这里插入图片描述

在这里插入图片描述


  • 🍎题目代码:
class Solution {
public:int maxProfit(vector<int>& prices) {int n = prices.size();vector<vector<int>> dp(n + 1, vector(3, 0));dp[0][0] = 0, dp[0][1] = -prices[0], dp[0][2] = 0;for (int i = 1; i < n; i ++){// 第 i 天结束后处于冷冻期dp[i][0] = dp[i - 1][1] + prices[i];// 处于 买入dp[i][1] = max(dp[i - 1][2] - prices[i], dp[i - 1][1]);// 处于 可交易dp[i][2] = max(dp[i - 1][0], dp[i - 1][2]);}return max(dp[n - 1][0], dp[n - 1][2]);}
};



2. 买卖股票的最佳时机Ⅳ ---- 只允许交易 k 次🖊

题目链接🔗
在这里插入图片描述


  • 🍎题目思路:
    在这里插入图片描述

在这里插入图片描述


  • 🍎题目代码:
class Solution {
public:int maxProfit(int k, vector<int>& prices) {int n = prices.size();vector<vector<int>> f(n + 1, vector(k + 1, 0)); // 第 i 天结束后, 处于 买入状态vector<vector<int>> g(n + 1, vector(k + 1, 0)); // 第 i 天结束后, 处于 卖出状态// 初始化 f[][j]、g[][j]  第一天结束后, j 表示交易的次数, 第一天根本就不能完成一次交易// 为了避免对后续结果造成影响, 所以将其初始化为 -∞for (int j = 0; j <= k; j ++){f[0][j] = -0x3f3f3f3f;g[0][j] = -0x3f3f3f3f;}// 第 1 天结束后,处于买入状态f[0][0] = -prices[0];// 第 1 天结束后,处于卖出状态g[0][0] = 0;for (int i = 1; i < n; i ++){for (int j = 0; j <= k; j ++){f[i][j] = max(f[i - 1][j], g[i - 1][j] - prices[i]);// 小优化:因为 j - 1 会越界// g[i][j] = max(g[i - 1][j], f[i - 1][j - 1] + prices[i])g[i][j] = g[i - 1][j];if (j - 1 >= 0)g[i][j] = max(g[i][j], f[i - 1][j - 1] + prices[i]);}}int ans = g[n - 1][0];for (int i = 0; i <= k; i ++)ans = max(ans, g[n - 1][i]);return ans;}
};

在这里插入图片描述

相关文章:

  • 坚持刷题|反转链表
  • 专业技能篇--算法
  • Es 索引查询排序分析
  • Cocos Creator,Youtube 小游戏!
  • C++ Primer 学习 -- Day 2
  • 麒麟系统mate_indicators进程占用内存资源高
  • c++的多态,继承,抽象类,虚函数表,虚函数等题目+分析
  • 5分钟了解单元测试
  • BUU CODE REVIEW 11 代码审计之反序列化知识
  • 【Python】类和对象的深入解析
  • C语言程序设计-11 结构体与共用体
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • Nginx基础理论
  • 智能温室大棚在无土栽培中的应用
  • MySQL:创建账户及修改密码
  • 【node学习】协程
  • android 一些 utils
  • Angular 4.x 动态创建组件
  • CEF与代理
  • Invalidate和postInvalidate的区别
  • Java新版本的开发已正式进入轨道,版本号18.3
  • php的插入排序,通过双层for循环
  • React-redux的原理以及使用
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 讲清楚之javascript作用域
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端技术周刊 2019-01-14:客户端存储
  • 使用Swoole加速Laravel(正式环境中)
  • 王永庆:技术创新改变教育未来
  • 微服务入门【系列视频课程】
  • 学习HTTP相关知识笔记
  • MyCAT水平分库
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​2020 年大前端技术趋势解读
  • ​香农与信息论三大定律
  • #NOIP 2014#Day.2 T3 解方程
  • (1)虚拟机的安装与使用,linux系统安装
  • (5)STL算法之复制
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • .Net 6.0 Windows平台如何判断当前电脑是否联网
  • .Net 基于MiniExcel的导入功能接口示例
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET性能优化(文摘)
  • :如何用SQL脚本保存存储过程返回的结果集
  • @Responsebody与@RequestBody
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [C#]winform部署官方yolov10目标检测的onnx模型