代码随想录算法训练营第五十天|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

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

首先一共有几种状态需要考虑

买入,卖出,处于冷冻期,买入后不动,卖出后不动,前一天卖出(今天处于冷冻期),冷冻期后买入,

将所有情况总结成4种情况

1.买入股票的状态(当天买入,买入后不动冷冻期后买入)dp[i][0]

2.卖出股票的状态

2(1):当天卖出  dp[i][1]

2(2):处于卖出的状态(在昨天/前天/更早之前已经卖出)dp[i][2]

3.冷冻期dp[i][3]

递推公式为:

dp[i][0]由dp[i-1][0]、dp[i-1][2]、dp[i-1][3]推导

dp[i][1]由dp[i-1][0]

dp[i][2]由dp[i-1][2],dp[i-1][0]

dp[i][3]由dp[i-1][1]

这里有个问题需要处理一下,如果是昨天卖出股票(处于卖出的状态)那么今天一定是处于冷冻期(dp[i][3]),今天是无法进入买入股票的状态的,也就是dp[i][0]不能根据dp[i-1][2]推导出来

对此我的理解是,昨天卖出今天冷冻这种卖出状态的特殊情况已经在dp[i][3]的推导中考虑到了,所以dp[i][0]的推导中不需要考虑这种情况

接下来是初始值的计算

dp[0][0]=-price[0],,dp[0][1]=0

关键是其他情况,卖出状态和冷冻期都是不可能在第一天就发生的,这种情况的初始值需要我们以推导后续结果正确的前提下单独设置

dp[1][0]可由dp[0][3]推导,在第一天冷冻第二天买入股票的情况下,要想推导正确,只能将dp[0][3]设置为0,dp[0][2]同理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LangChain笔记

很好的LLM知识博客: https://lilianweng.github.io/posts/2023-06-23-agent/ LangChain的prompt hub: https://smith.langchain.com/hub 一. Q&A 1. Q&A os.environ["OPENAI_API_KEY"] “OpenAI的KEY” # 把openai-key放到环境变量里&…

为了可读: 使用typede给函数指针类型取别名(c++中也可以使用auto自动推导)

void func1() {}int main() {void (*fun)() func1;cin.get(); } 在这行代码中,我们使用了函数指针,但是你会发现函数指针的类型很晦涩,所以为了更加的可读,我们不建议直接使用这种类型。 所以,我们可以使用typedef定义…

protobuf —— 认识和安装

protobuf —— 认识和安装 什么是序列化和反序列化有哪些常见的什么是序列化和反序列化工具Protobuf安装安装依赖开始安装 连接动态库一些遗留问题 我们今天来看一个序列化和反序列化的工具:protobuf。 什么是序列化和反序列化 序列化(Serialization&a…

网易互娱-AI Lab (游戏AI算法实习生-NLP方向) 二面面经

😄 这轮面试感觉像是boss面试我,问的问题基本是从比较大的方面来问,没有问很多DL/ML理论问题。 文章目录 1、自我介绍2、科研介绍、项目介绍3、介绍下nlp的发展4、哪个模型你认为在推荐领域比较重要?5、fm介绍?6、tran…

【uni-best+UView】使用mitt实现自定义错误对话框

痛点 目前在设计一个uni-best的前端全局的异常提示信息,如果采用Toast方式,对微信支持的不友好。微信的7中文长度连个NPE信息都无法完整显示,更不用提Stacktrace的复杂报错了。如果使用对话框,必须在页面先预先定义,对…

链表类型的有界或无界阻塞线程安全队列-LinkedBlockingQueue(FIFO)和LinkedBlockingDeque

LinkedBlockingQueue和LinkedBlockingDeque基本上大部分特性是相同的。 注意:所有代码源码都是LinkedBlockingQueue的。 特点: 都继承于AbstractQueue并实现BlockingQueue,说明有Queue的一些特性例如FIFO和一些方法。两个都是链表结构且结构可变(动态数组),最大容量2^31…

时间(空间)复杂度(结构篇)

目录 前言: 一、时间复杂度 1.1 时间复杂度的定义 1.2 时间复杂度的分析 表示方法: 1.3 常见的时间复杂度 1.4 时间复杂度的计算以及简单的分析 冒泡排序 折半查找(二分查找) 斐波那契数列(递归&#xff09…

OSPF网络类型实验2

对R4 对R5,找R1注册 对R1宣告环回,再宣告一下tunnel接口 本实验不考虑区域划分 现在已经全部宣告完成 对R1,2,3改接口 broadcast工作方式hello时间10s,然后进行dr选举,由于2,3之间没有伪广播 …

浏览器指纹技术介绍

简单介绍 浏览器指纹(Browser Fingerprinting)是一种通过收集用户浏览器和设备的各种信息来唯一识别用户的方法。即使用户清除了浏览器缓存或使用隐身模式,这些信息依然可以帮助追踪用户的活动。 浏览器指纹的组成 浏览器指纹通过收集以下…

ciscn2024(上传一下,有侵权什么的问题的话联系删除)

Web Simple_php 这个Simple_php一点儿也不Simple (⋟﹏⋞) 源码放这儿了&#xff1a; <?phpini_set(open_basedir, /var/www/html/); error_reporting(0);if(isset($_POST[cmd])){$cmd escapeshellcmd($_POST[cmd]); if (!preg_match(/ls|dir|nl|nc|cat|tail|more|flag…

Yolov9调用COCOAPI生成APs,APm,APl

最近在做小目标检测的东西&#xff0c;因为后期毕业论文需要&#xff0c;所以开始使用Yolov9模型&#xff0c;运行val.py的时候不会自己产生小目标的AP指标&#xff0c;所以研究了一下&#xff0c;步骤非常简单&#xff1a; 第一步&#xff1a; 在数据集中生成json格式的Annota…

【Text2SQL 经典模型】HydraNet

论文&#xff1a;Hybrid Ranking Network for Text-to-SQL ⭐⭐⭐ arXiv:2008.04759 HydraNet 也是利用 PLM 来生成 question 和 table schema 的 representation 并用于生成 SQL&#xff0c;并在 SQLova 和 X-SQL 做了改进&#xff0c;提升了在 WikiSQL 上的表现。 一、Intro…

探索Linux中的神奇工具:重定向符的妙用

探索Linux中的神奇工具&#xff1a;重定向符的妙用 在Linux系统中&#xff0c;重定向符是一个强大的工具&#xff0c;用于控制命令的输入和输出&#xff0c;实现数据流的定向。本文将详细介绍重定向符的基本用法和一些实用技巧&#xff0c;帮助读者更好地理解和运用这个功能。…

有趣的css - 加减动态多选框

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用 css 实现一个适用树形菜单场景的加减动态多选框。 最新文章通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页面…

【调试笔记-20240525-Windows-配置 QEMU/x86_64 运行 OpenWrt-23.05 发行版并搭建 WordPress 博客网站】

调试笔记-系列文章目录 调试笔记-20240525-Windows-配置 QEMU/x86_64 运行 OpenWrt-23.05 发行版并搭建 WordPress 博客网站 文章目录 调试笔记-系列文章目录调试笔记-20240525-Windows-配置 QEMU/x86_64 运行 OpenWrt-23.05 发行版并搭建 WordPress 博客网站 前言一、调试环境…

数组的理论知识

文章目录 数组的理论知识 数组的理论知识 数组是我们在编程时期经常使用到的一种数据结构。 特点&#xff1a; 在连续的内存空间中存储相同数据类型的数据 如图&#xff1a; arr 数组 注意点&#xff1a;数组的修改的效率是比较慢的&#xff0c;O(n)&#xff0c;因为数组只…

人工智能万卡 GPU 集群的硬件和网络架构

万卡 GPU 集群互联&#xff1a;硬件配置和网络设计 一、背景 自从 OpenAI 推出 ChatGPT 以来&#xff0c;LLM 迅速成为焦点关注的对象&#xff0c;并取得快速发展。众多企业纷纷投入 LLM 预训练&#xff0c;希望跟上这一波浪潮。然而&#xff0c;要训练一个 100B 规模的 LLM&a…

嵌入式学习——3——多点通信

1、套接字选项&#xff08;socket options&#xff09; int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); 功能&#xff1a;获取或设置套接…

设计模式在芯片验证中的应用——单例

一、单例模式 单例模式(Singleton)是一种创建型设计模式&#xff0c;能够保证一个类只有一个实例&#xff0c; 并提供一个访问该实例的全局节点。验证环境配置(configuration)类、超时(timeout)处理类等可以使用单例实现。比如说验证环境需要在特定场景中监测特定接口上的超时事…

【linux软件基础知识】进程管理命令的简要概述

下面是linux进程命令的简要概述: ps(进程状态): 显示有关当前正在运行的进程的信息。常用选项: ps -e(或 ps -A):列出所有进程。ps -ef:显示完整格式列表。ps -aux:显示所有用户的进程。top: 显示正在运行的系统进程的动态实时视图。 提供 CPU 使用率、内存使用率和…