【代码随想录】刷题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数组的含义:dp[i][0]为第i天卖出股票的最大价值;dp[i][1]为第i天持有股票的最大价值 2.dp数组的条件:由于有冷冻期,所以dp数组的条件就变了。第i天卖出股票的最大…...
centos7下svnserve方式部署subversion/SVN服务端(实操)
一般来说,subversion服务器可以用两种方式架设: 一种是基于svnserve,svnserve作为服务端; 一种是基于Apache,用apache作为服务端。 这里采用第一种方式部署。 执行如下命令,安装SVN。 yum install sub…...
一款红队批量脆弱点搜集工具
功能 指纹识别:调用“三米前有香蕉皮“前辈工具,他的工具比finger好用 寻找资产中404,403,以及网页中存在的其他薄弱点,以及需要特定路径访问的资产 后续会把nuclei加进来 目前只有windows可以用 使用 第一次使用脚本请运行p…...
Docker 基本管理
一、Docker 概述 Docker是一个开源的应用容器引擎,基于go语言开发并遵守了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。 Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自…...
Debezium系列之:把多张表的数据分发到同一个Kafka Topic,同一张表的数据始终进入Topic相同分区
Debezium系列之:把多张表的数据分发到同一个Kafka Topic,同一张表的数据始终进入Topic相同分区 一、需求背景二、实现思路三、核心参数和参数详解四、创建相关表五、提交Debezium Connector六、插入数据七、消费Kafka Topic八、总结和延展一、需求背景 debezium采集数据库的多…...
雪崩 - 如何重试 - sla和重试风暴的双保证
父文章 异常导致级联雪崩的例子 - 不应该有立即重试._个人渣记录仅为自己搜索用的博客-CSDN博客 一个系统处于稳态临界点 如果立即重试3次, 会导致流量瞬间增大, 哪怕后来系统10s内自愈了, 这个时候, 流量本质上增加了3倍. 如果rpc框架不是fastFail ( 超过 调用方失败timeout上…...
[网鼎杯 2018]Fakebook1
拿到题目后是一个博客的界面,这里可以登录和注册 点入登录界面,猜测可能是sql注入 试了很多次,都不是,也没有回显报错,所以把目光放到了注册上面 注册的其他行数据,差不多都可以乱填,只有一个bl…...
Oracle-第一章-多表查询和其他
4多表关联查询 4.1表的别名 ①在多表关联查询时,如果多个表之间存在同名的列,则必须用表名限定列的引用如dept.deptno,emp.deptno ②为使语句简洁,使用表别名,表别名在from子句中定义如 emp e ③表别名一经定义,在整…...
Office Visio 2016安装
哈喽,大家好。今天一起学习的是Visio 2016的安装,这是一个绘制流程图的软件,用有效的绘图表达信息,比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件,便于IT和商务人员就复杂…...
GPT从入门到精通之 GPT 模型入门及原理介绍
GPT 模型入门及原理介绍 如果你关心人工智能,并关注最新的自然语言处理技术,那么你可能听说过 GPT 模型。GPT(Generative Pre-trained Transformer)是 OpenAI [1] 研究团队开发的一种基于 Transformer 架构的模型,能够…...
USB数据线上的“疙瘩”
在不少键盘、鼠标或是游戏外设的数据线末端我们都能见到一小段金属圆环。虽然这算得上是习以为常的一个设计,但如果说到其具体作用的话很多人一下子还真回答不上来。反正笔者在这里先可以告诉大家,这货肯定不是简简单单的配重块或是装饰品,要…...
公司新来了个00后测开,上来一顿操作给我秀麻了.....
开年公司新来了个同事,听说大学是学的广告专业,因为喜欢IT行业就找了个培训班,后来在一家小公司实习半年,现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍,服务器缩减一半,性能反而提升4倍!给公司…...
深度学习架构-Tensorflow
深度学习基本概念 人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能的目的 就是让计算机能够像人一样思考。 强人工智能:就是要使机器学习人的理解、学习和执行任务的能力。 弱人工智能:指用…...
SpringBoot 使用validator进行参数校验(实例操作+注意事项+自定义参数校验)
一、实例操作 ①、引入依赖 <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.0.4.Final</version></dependency> ②、创建实体类 package com.springboot.entity;im…...
字节测开岗面试记:二面被血虐,幸好还是拿到了Offer.....
在互联网做了几年之后,去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好,更重要的是,它是对你专业能力的背书,大厂工作背景多少会给你的简历增加几分竞争力。 但说实话,想进大厂还真没那么容易。最近面试字…...
只会标准答案,是不可救药的愚蠢
听说今天高考,谨以此文作为高考寄语。 前段时间网上看到一个金句,非常值得分享,“最难沟通的,不是那些头脑空空的人,而是满脑子只有标准答案的人”。 前两天直播我放了一首何勇的老歌,当时年轻的时候&#…...
RocketMQ broker启动失败
版本:4.9.3 现象:NameServer启动没问题,Broker无法启动。 查看日志,没有broker方面的报错,应该是整个服务都没起来。 于是开始网上搜索解决方案: 方案1: 删除store文件夹。 删除之后问题依…...
浅谈useMemo函数
什么是 useMemo? useMemo 是 React 中的一个 Hook,它可以用来缓存计算结果,并在后续的渲染中重复利用这些计算结果。useMemo 接收两个参数:一个函数和一个依赖数组。当依赖数组中的任何一个值发生变化时,useMemo 会重…...
【Python】Python系列教程-- Python3 推导式(十九)
文章目录 前言列表推导式字典推导式集合推导式元组推导式(生成器表达式) 前言 往期回顾: Python系列教程–Python3介绍(一)Python系列教程–Python3 环境搭建(二)Python系列教程–Python3 VSc…...
docker对cpu资源做限制
系列文章目录 文章目录 系列文章目录一、cgroup1.groups四大功能2.CPU 资源控制 二、1.限制可用的 swap 大小, --memory-swap2.对磁盘IO配额控制(blkio)的限制 总结 一、cgroup 1.groups四大功能 资源限制:可以对任务使用的资源…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
