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

【代码随想录】刷题Day51

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

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

1.dp数组的含义:dp[i][0]为第i天卖出股票的最大价值;dp[i][1]为第i天持有股票的最大价值

2.dp数组的条件:由于有冷冻期,所以dp数组的条件就变了。第i天卖出股票的最大价值有两种情况,一是上一次卖出股票的最大价值,二是前一次持有股票现在卖出的最大价值,那么条件就是dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i])。第i天持有股票的最大价值也有两种,一为上一次持有股票的最大价值,二为两天前卖出股票的最大价值(因为冷冻期不能卖上一天持有的股票),那么条件为dp[i][1]=max(dp[i-1][1],dp[i-2][0]-prices[i]);

3.初始化:dp[0][0]=0和dp[0][1]=-prices[0]没什么好说的。但是由于我们的持股逻辑变为i-2,也就是说如果从1开始遍历会出现越界访问,那么我们需要提前设置1位置的值,1位置的逻辑是不需要考虑冷冻期的,所以延续前几题对dp数组条件的理解,自然知道初始化为:dp[1][0]=max(dp[0][0],dp[0][1]+prices[1])和dp[1][1]=max(dp[0][1],dp[0][0]-prices[1]);

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

2.买卖股票的最佳时机含手续费

714. 买卖股票的最佳时机含手续费

与122. 买卖股票的最佳时机 II相似

犹豫本题加入了所谓的“手续费”,因此其实条件需要在卖出股票的时候需要将手续费一并减去,说白了就是在原来卖出的基础上便宜了一点,但是我们寻找卖出的最大价值随着dp数组的含义不变而不变。数组的含义依然是最大值,只不过可能频繁交易会出现原先频繁买卖的股票方法可能小了,但是dp数组依然是通过每一次的买入卖出得到包含减去手续费的最有价值的方法,那么条件自然只需要减去fee即可,所以变成了dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i]-fee)

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

3.总结

我是觉得股票类问题核心就是在确定d数组到底表示一些什么,应该这么定义能把所有的情况囊括进去。

1.比如最开始的股票问题,只是找最大值,那么我们就不需要考虑需要累加的问题,直接取最大值比较。

2.比如后面的累加最大价值,那么其实就是将上一次的价值和当前卖出的股票价值加上求出最大值,比起最开始的求一次最大值也就多了一步处理逻辑。

3.又限制购买次数,这样我们所设定的dp数组又需要表示第n次持股或者抛股的定义。最后根据上下关系进行条件判断

那么其实都是需要先清楚题目条件,找到适合的dp数组定义,是否多次或者一次的买入。随后看给出的条件对dp数组条件进行模拟,其实模拟的思路很简单,针对单个条件就是看前一次和当前次的关系;针对整体,则是看每层相互的关系。当确定条件后,根据条件进行对应的初始化。初始化最开始的值要满足题目描述和dp定义以及dp数组对应操作规范,最后还需要观察是否需要特殊的初始化。

相关文章:

【代码随想录】刷题Day51

1.最佳买卖股票时机含冷冻期 309. 最佳买卖股票时机含冷冻期 1.dp数组的含义&#xff1a;dp[i][0]为第i天卖出股票的最大价值&#xff1b;dp[i][1]为第i天持有股票的最大价值 2.dp数组的条件&#xff1a;由于有冷冻期&#xff0c;所以dp数组的条件就变了。第i天卖出股票的最大…...

centos7下svnserve方式部署subversion/SVN服务端(实操)

一般来说&#xff0c;subversion服务器可以用两种方式架设&#xff1a; 一种是基于svnserve&#xff0c;svnserve作为服务端&#xff1b; 一种是基于Apache&#xff0c;用apache作为服务端。 这里采用第一种方式部署。 执行如下命令&#xff0c;安装SVN。 yum install sub…...

一款红队批量脆弱点搜集工具

功能 指纹识别:调用“三米前有香蕉皮“前辈工具&#xff0c;他的工具比finger好用 寻找资产中404&#xff0c;403&#xff0c;以及网页中存在的其他薄弱点&#xff0c;以及需要特定路径访问的资产 后续会把nuclei加进来 目前只有windows可以用 使用 第一次使用脚本请运行p…...

Docker 基本管理

一、Docker 概述 Docker是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵守了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具&#xff0c;是一种轻量级的“虚拟机”。 Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自…...

Debezium系列之:把多张表的数据分发到同一个Kafka Topic,同一张表的数据始终进入Topic相同分区

Debezium系列之:把多张表的数据分发到同一个Kafka Topic,同一张表的数据始终进入Topic相同分区 一、需求背景二、实现思路三、核心参数和参数详解四、创建相关表五、提交Debezium Connector六、插入数据七、消费Kafka Topic八、总结和延展一、需求背景 debezium采集数据库的多…...

雪崩 - 如何重试 - sla和重试风暴的双保证

父文章 异常导致级联雪崩的例子 - 不应该有立即重试._个人渣记录仅为自己搜索用的博客-CSDN博客 一个系统处于稳态临界点 如果立即重试3次, 会导致流量瞬间增大, 哪怕后来系统10s内自愈了, 这个时候, 流量本质上增加了3倍. 如果rpc框架不是fastFail ( 超过 调用方失败timeout上…...

[网鼎杯 2018]Fakebook1

拿到题目后是一个博客的界面&#xff0c;这里可以登录和注册 点入登录界面&#xff0c;猜测可能是sql注入 试了很多次&#xff0c;都不是&#xff0c;也没有回显报错&#xff0c;所以把目光放到了注册上面 注册的其他行数据&#xff0c;差不多都可以乱填&#xff0c;只有一个bl…...

Oracle-第一章-多表查询和其他

4多表关联查询 4.1表的别名 ①在多表关联查询时&#xff0c;如果多个表之间存在同名的列&#xff0c;则必须用表名限定列的引用如dept.deptno,emp.deptno ②为使语句简洁&#xff0c;使用表别名&#xff0c;表别名在from子句中定义如 emp e ③表别名一经定义&#xff0c;在整…...

Office Visio 2016安装

哈喽&#xff0c;大家好。今天一起学习的是Visio 2016的安装&#xff0c;这是一个绘制流程图的软件&#xff0c;用有效的绘图表达信息&#xff0c;比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件&#xff0c;便于IT和商务人员就复杂…...

GPT从入门到精通之 GPT 模型入门及原理介绍

GPT 模型入门及原理介绍 如果你关心人工智能&#xff0c;并关注最新的自然语言处理技术&#xff0c;那么你可能听说过 GPT 模型。GPT&#xff08;Generative Pre-trained Transformer&#xff09;是 OpenAI [1] 研究团队开发的一种基于 Transformer 架构的模型&#xff0c;能够…...

USB数据线上的“疙瘩”

在不少键盘、鼠标或是游戏外设的数据线末端我们都能见到一小段金属圆环。虽然这算得上是习以为常的一个设计&#xff0c;但如果说到其具体作用的话很多人一下子还真回答不上来。反正笔者在这里先可以告诉大家&#xff0c;这货肯定不是简简单单的配重块或是装饰品&#xff0c;要…...

公司新来了个00后测开,上来一顿操作给我秀麻了.....

开年公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍!给公司…...

深度学习架构-Tensorflow

深度学习基本概念 人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能的目的 就是让计算机能够像人一样思考。 强人工智能&#xff1a;就是要使机器学习人的理解、学习和执行任务的能力。 弱人工智能&#xff1a;指用…...

SpringBoot 使用validator进行参数校验(实例操作+注意事项+自定义参数校验)

一、实例操作 ①、引入依赖 <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.0.4.Final</version></dependency> ②、创建实体类 package com.springboot.entity;im…...

字节测开岗面试记:二面被血虐,幸好还是拿到了Offer.....

在互联网做了几年之后&#xff0c;去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好&#xff0c;更重要的是&#xff0c;它是对你专业能力的背书&#xff0c;大厂工作背景多少会给你的简历增加几分竞争力。 但说实话&#xff0c;想进大厂还真没那么容易。最近面试字…...

只会标准答案,是不可救药的愚蠢

听说今天高考&#xff0c;谨以此文作为高考寄语。 前段时间网上看到一个金句&#xff0c;非常值得分享&#xff0c;“最难沟通的&#xff0c;不是那些头脑空空的人&#xff0c;而是满脑子只有标准答案的人”。 前两天直播我放了一首何勇的老歌&#xff0c;当时年轻的时候&#…...

RocketMQ broker启动失败

版本&#xff1a;4.9.3 现象&#xff1a;NameServer启动没问题&#xff0c;Broker无法启动。 查看日志&#xff0c;没有broker方面的报错&#xff0c;应该是整个服务都没起来。 于是开始网上搜索解决方案&#xff1a; 方案1&#xff1a; 删除store文件夹。 删除之后问题依…...

浅谈useMemo函数

什么是 useMemo&#xff1f; useMemo 是 React 中的一个 Hook&#xff0c;它可以用来缓存计算结果&#xff0c;并在后续的渲染中重复利用这些计算结果。useMemo 接收两个参数&#xff1a;一个函数和一个依赖数组。当依赖数组中的任何一个值发生变化时&#xff0c;useMemo 会重…...

【Python】Python系列教程-- Python3 推导式(十九)

文章目录 前言列表推导式字典推导式集合推导式元组推导式&#xff08;生成器表达式&#xff09; 前言 往期回顾&#xff1a; Python系列教程–Python3介绍&#xff08;一&#xff09;Python系列教程–Python3 环境搭建&#xff08;二&#xff09;Python系列教程–Python3 VSc…...

docker对cpu资源做限制

系列文章目录 文章目录 系列文章目录一、cgroup1.groups四大功能2.CPU 资源控制 二、1.限制可用的 swap 大小&#xff0c; --memory-swap2.对磁盘IO配额控制&#xff08;blkio&#xff09;的限制 总结 一、cgroup 1.groups四大功能 资源限制&#xff1a;可以对任务使用的资源…...

2026降AI率工具红黑榜:降AI率网站怎么选?看完少走弯路

千笔AI、ThouPen、豆包位列红榜&#xff0c;精准适配国内高校AI率检测规范&#xff1b;黑榜需避开低质免费工具、无正规检测对接平台及改写痕迹明显的工具&#xff1b;选择时应优先匹配三维模型&#xff1a;降AI效果-学术合规性-使用成本。 一、红榜&#xff1a;10 款高分论文降…...

终极Windows 11安装指南:3分钟轻松绕过硬件检测限制

终极Windows 11安装指南&#xff1a;3分钟轻松绕过硬件检测限制 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat 还在为…...

RWKV7-1.5B-g1a轻量对话模型应用:微信公众号自动回复+知识库问答搭建

RWKV7-1.5B-g1a轻量对话模型应用&#xff1a;微信公众号自动回复知识库问答搭建 1. 模型简介与特点 rwkv7-1.5B-g1a 是基于 RWKV-7 架构的多语言文本生成模型&#xff0c;特别适合中文轻量对话场景。相比传统大模型&#xff0c;它具有以下优势&#xff1a; 资源占用低&#…...

基于YOLOv8深度学习的驾驶员分心行为实时检测与语音预警系统【python源码+Pyqt5界面+数据集】

1. 项目背景与核心价值 开车时低头看手机、点烟、喝饮料这些看似平常的小动作&#xff0c;每年导致全球超过120万起交通事故。我去年参与某物流车队安全系统升级时&#xff0c;亲眼见过一个司机因为伸手拿水杯导致车辆偏离车道的事故录像——整个过程不到3秒。这正是我们开发这…...

6_Harness驾驭工程可靠性层:混沌工程与服务可靠性管理

6_Harness驾驭工程可靠性层&#xff1a;混沌工程与服务可靠性管理 关键字&#xff1a; Chaos Engineering、混沌工程、SRM、服务可靠性管理、SLI、SLO、错误预算、韧性评分、故障模拟、事件响应、事后分析、韧性验证、自动故障注入、最小爆炸半径、Datadog、New Relic、Prometh…...

AsyncSerial:嵌入式非阻塞串口通信实现

1. AsyncSerial 库深度解析&#xff1a;面向嵌入式实时系统的非阻塞串口通信实现 在嵌入式系统开发中&#xff0c;串口&#xff08;UART/USART&#xff09;通信因其硬件资源占用少、协议简单、调试便捷等优势&#xff0c;始终是固件层最基础且高频使用的外设接口。然而&#xf…...

沃虎电子:SFP连接器在高速光模块中的应用与选型要点

SFP&#xff08;Small Form-factor Pluggable&#xff09;连接器是现代光通信设备的核心接口组件&#xff0c;广泛应用于交换机、服务器、光模块等设备。随着数据中心向400G/800G演进&#xff0c;SFP连接器的性能要求不断提升。本文从工程实践角度&#xff0c;系统介绍SFP连接器…...

实战必备:快马AI打造ensp实验室级安装方案,保障网络教学顺利进行

作为一名网络工程专业的教师&#xff0c;我深知ensp&#xff08;Enterprise Network Simulation Platform&#xff09;在实验教学中的重要性。但每次新学期开始&#xff0c;最头疼的就是帮学生们搭建实验环境。不同电脑配置、系统版本、驱动兼容性问题&#xff0c;常常让简单的…...

【Mojo+Python混合部署失效真相】:92%开发者忽略的编译期符号冲突、运行时上下文隔离与调试断点丢失问题

第一章&#xff1a;MojoPython混合部署失效真相全景概览Mojo 作为新兴的高性能系统编程语言&#xff0c;设计初衷是与 Python 生态无缝互操作&#xff1b;然而在真实生产部署中&#xff0c;“Mojo Python 混合部署”常出现静默失败、ABI 不兼容、运行时崩溃或性能断崖式下降等…...

你的产品过不了EMC测试?很可能是电源接口这3个PCB布局坑没避开

电源接口EMC设计避坑指南&#xff1a;PCB布局中的三个致命细节 当你的产品在EMC测试中屡屡碰壁时&#xff0c;问题往往不在于防护电路设计本身&#xff0c;而是隐藏在PCB布局的细微之处。许多工程师精心设计了符合规范的防护拓扑&#xff0c;却在传导骚扰测试中遭遇滑铁卢。本文…...