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

代码随想录算法训练营第五十天|123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III

这道题一下子就难度上来了,关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。
视频讲解:https://www.bilibili.com/video/BV1WG411K7AR
https://programmercarl.com/0123.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAIII.html
题目大意:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

class Solution {
public:int maxProfit(vector<int>& prices) {if (prices.size() == 0) return 0;vector<vector<int>> dp(prices.size(), vector<int>(5, 0));dp[0][1] = -prices[0];dp[0][3] = -prices[0];for (int i = 1; i < prices.size(); i++) {dp[i][0] = dp[i - 1][0];dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i]);dp[i][2] = max(dp[i - 1][2], dp[i - 1][1] + prices[i]);dp[i][3] = max(dp[i - 1][3], dp[i - 1][2] - prices[i]);dp[i][4] = max(dp[i - 1][4], dp[i - 1][3] + prices[i]);}return dp[prices.size() - 1][4];}
};

时间复杂度:O(n)
空间复杂度:O(n × 5)

188.买卖股票的最佳时机IV

本题是123.买卖股票的最佳时机III 的进阶版
视频讲解:https://www.bilibili.com/video/BV16M411U7XJ
https://programmercarl.com/0188.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAIV.html
题目大意:给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

class Solution {
public:int maxProfit(int k, vector<int>& prices) {if (prices.size() == 0) return 0;vector<vector<int>> dp(prices.size(), vector<int>(2 * k + 1, 0));for (int j = 1; j < 2 * k; j += 2) {dp[0][j] = -prices[0];}for (int i = 1;i < prices.size(); i++) {for (int j = 0; j < 2 * k - 1; j += 2) {dp[i][j + 1] = max(dp[i - 1][j + 1], dp[i - 1][j] - prices[i]);dp[i][j + 2] = max(dp[i - 1][j + 2], dp[i - 1][j + 1] + prices[i]);}}return dp[prices.size() - 1][2 * k];}
};

时间复杂度: O(n * k),其中 n 为 prices 的长度
空间复杂度: O(n * k)

http://www.lryc.cn/news/339718.html

相关文章:

  • Composer安装与配置:简化PHP依赖管理的利器(包括加速镜像设置)
  • 灯塔:抽象类和接口笔记
  • mybatis 入门
  • Spring-AI-上下文记忆
  • 内存函数memcpy、mommove、memset、memcmp
  • symfony框架介绍
  • 【计算机毕业设计】游戏售卖网站——后附源码
  • LabVIEW电信号傅里叶分解合成实验
  • Docker 学习笔记(六):挑战容器数据卷技术一文通,实战多个 MySQL 数据同步,能懂会用,初学必备
  • csdn怎么变得这么恶心,自动把一些好的文章分享改成了vip可见
  • 自然语言处理NLP:文本预处理Text Pre-Processing
  • 家庭网络防御系统搭建-虚拟机安装siem/securityonion网络连接问题汇总
  • 2024年外贸行业营销神器推荐
  • k8s高可用集群部署介绍 -- 理论
  • 【GDAL-Python】1-在Python中使用GDAL读写栅格文件
  • 【C++】explicit关键字详解(explicit关键字是什么? 为什么需要explicit关键字? 如何使用explicit 关键字)
  • maven引入外部jar包
  • 李沐37_微调——自学笔记
  • 【小程序】生成短信中可点击的链接
  • 欧拉函数(模板题)
  • Thingsboard PE 白标的使用
  • 智能物联网远传冷水表管理系统
  • Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程
  • 2024年华为OD机试真题-最长子字符串的长度(二)-Python-OD统一考试(C卷)
  • 【24届数字IC秋招总结】正式批面试经验汇总5——蔚来、tp-link
  • 【JAVA基础篇教学】第八篇:Java中List详解说明
  • RN向上向下滑动组件封装(带有渐变色)
  • 27、Lua 学习笔记之五(Lua中的数学库)
  • 【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
  • OpenHarmony实战开发-页面深色模式适配。