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

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

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

视频讲解:动态规划来决定最佳时机,这次有冷冻期!| LeetCode:309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bilibili代码随想录

解题思路

1. dp[i][0]  第i天持有股票的状态 

dp[i][1]第i天不持股的状态 冷冻期前肯定是卖出了股票

dp[i][2] 卖出股票的状态

dp[i][3] 冷冻期

本题为什么要把不持股的状态拆开?因为我们有冷冻期和没有股票期间,和卖出当天状态,因此我们拆为三个状态

2.递推公式

dp[i][0] = max(dp[i-1][0], dp[i-1][3] - prices[i] , dp[i-1][1]-prices[i])   可以延续前一天有股票,也可以在冷冻期后买入,也可以在保持卖出的状态买入

dp[i][1] =  max(dp[i-1][1], dp[i-1][3])                                                                 延续前一天保持卖出股票的状态,也可以是冷冻期后面一天

dp[i][2] =dp[i-1][0] + prices[i]                只有持股可以得到卖出股票的状态

dp[i][3] = dp[i-1][2]                               冷冻期一定是保持卖出股票当天的后面一天

3.初始化

dp[0][0] = -prices[0]

dp[0][1] = 0

dp[0][2] = 0

dp[0][3] = 0

4.遍历顺序

从前往后 

 

class Solution {
public:int maxProfit(vector<int>& prices) {int n = prices.size()-1;vector<vector<int>> dp(n+1,vector<int>(4,0));dp[0][0] = -prices[0];  //持股dp[0][1] = 0;     //保持不持股的状态dp[0][2] = 0;     //卖出股票当天dp[0][3] = 0;     //冷冻期for(int i=1 ; i<prices.size(); i++){dp[i][0] = max( dp[i-1][0] , max(dp[i-1][1] - prices[i] , dp[i-1][3] - prices[i]));dp[i][1] = max( dp[i-1][1] , dp[i-1][3] );dp[i][2] = dp[i-1][0] + prices[i];dp[i][3] = dp[i-1][2];}return max(dp[n][1],max(dp[n][2],dp[n][3]));}
};

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

视频讲解:动态规划来决定最佳时机,这次含手续费!| LeetCode:714.买卖股票的最佳时机含手续费_哔哩哔哩_bilibili

代码随想录

解题思路

本题和买卖股票2是一样的,只需要买入的时候减去手续费就可以了

class Solution {
public:int maxProfit(vector<int>& prices, int fee) {vector<vector<int>> dp(prices.size(),vector<int>(2,0));dp[0][0] = -prices[0] - fee;dp[0][1] = 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][1];}
};

股票问题总结

代码随想录

相关文章:

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

309.最佳买卖股票时机含冷冻期 视频讲解&#xff1a;动态规划来决定最佳时机&#xff0c;这次有冷冻期&#xff01;| LeetCode&#xff1a;309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bilibili代码随想录 解题思路 1. dp[i][0] 第i天持有股票的状态 dp[i][1]第i天不持股的状…...

Polar Web【中等】反序列化

Polar Web【中等】反序列化 Contents Polar Web【中等】反序列化思路&探索EXPPHP生成PayloadGET传递参数 运行&总结 思路&探索 一个经典的反序列化问题&#xff0c;本文采用PHP代码辅助生成序列字符串的方式生成 Payload 来进行手动渗透。 打开站点&#xff0c;分析…...

测试工具链

缺陷管理 bug管理工具 devops---项目管理--缺陷管理 bug管理地址 https://devsecops.mychery.com:8443/chery/project?filterROLE&statusACTIVE bug管理环境 采用公司的devops平台&#xff0c;对每个项目的bug进行管理。目前在使用 接口测试和服务端性能测试 工具…...

【求助】ansible synchronize 问题

求助贴&#xff0c;不是解答贴哈 最近把一台服务器从centos7.9升级到alibaba cloud linux3之后&#xff0c;出现了一个ansible的问题。 版本是ansible8.3.0ansible-core-2.15.3&#xff0c;在使用synchronize模块时&#xff0c;我使用了别名&#xff08;比如web1&#xff09;会…...

sql server 把表的所有的null改为0,不要限制某列

DECLARE tableName NVARCHAR(256) Linear -- 替换为你的表名 DECLARE sql NVARCHAR(MAX) SELECT sql UPDATE tableName SET COLUMN_NAME 0 WHERE COLUMN_NAME IS NULL; FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME tableName AND TABLE_SCHEM…...

【C#】WinForm关闭新(二级)界面使主程序关闭

参考视频&#xff1a;https://www.bilibili.com/video/BV1JY4y1G7jo?p14&vd_source1c57ab1b2e551da5b65c0dfb0f05a493 1.背景介绍 主程序界面&#xff0c;点击弹出二级界面&#xff08;同时隐藏主界面&#xff09;&#xff0c;不做任何设置&#xff0c;这时关闭二级界面…...

光伏电站绘制软件的基本方法

随着可再生能源的快速发展&#xff0c;光伏电站的建设日益受到重视。为了提高光伏电站设计的效率和准确性&#xff0c;光伏电站绘制软件的应用变得至关重要。本文将介绍光伏电站绘制软件的基本方法&#xff0c;包括绘制屋顶、屋脊、障碍物和参照物&#xff0c;铺设光伏板&#…...

【Python】selenium使用find_element时解决【NoSuchElementException】问题的方法

NoSuchElementException 是 Selenium WebDriver 中的一种异常&#xff0c;我们在写selenium.find_element 的时候也比较常见&#xff0c;它会在我们要尝试定位一个不存在的元素时抛出这类错误。 以下是一些解决NoSuchElementException 的常用方法&#xff1a; 检查元素定位器:…...

oracle表锁

--oracle提醒记录被另一个用户锁住&#xff1a; --问题描述&#xff1a;你去修改数据时&#xff0c;报错“ --问题分析&#xff1a;你用select t.*,t.rowid from qxt_logsend_0728修改数据结果集时&#xff0c;计oracle会通过事务锁锁住这个记录&#xff0c;点击记录改变&#…...

父组件调用子组件方法(组合式 API版)

在 Vue 3 中&#xff0c;defineExpose 是一个用于在组合式 API (Composition API) 中暴露组件内部方法或属性的函数。它允许父组件通过 ref 引用子组件实例&#xff0c;并调用子组件暴露的方法或访问其属性。 以下是子组件和父组件如何使用 defineExpose 和 ref 的详细解释和示…...

【动手学深度学习】使用块的网络(VGG)的研究详情

目录 &#x1f30a;1. 研究目的 &#x1f30a;2. 研究准备 &#x1f30a;3. 研究内容 &#x1f30d;3.1 多层感知机模型选择、欠拟合和过拟合 &#x1f30d;3.2 练习 &#x1f30a;4. 研究体会 &#x1f30a;1. 研究目的 理解块的网络结构&#xff1b;比较块的网络与传统…...

JFinal学习07 控制器——接收数据之getBean()和getModel()

JFinal学习07 控制器——接收数据之getBean()和getModel() 视频来源https://www.bilibili.com/video/BV1Bt411H7J9/?spm_id_from333.337.search-card.all.click 文章目录 JFinal学习07 控制器——接收数据之getBean()和getModel()一、接收数据的类型二、getBean()和getModel()…...

二百三十九、Hive——Hive函数全篇

--创建测试数据库test show databases ; create database if not exists test; use test;一、关系运算 1、等值比较&#xff1a; select 1 where 1 1; --1 select 1 where 0 1; --NULL 2、不等值比较&#xff1a;<> select 1 where 1 <> 2; --1 sele…...

视频去水印电脑版,视频去水印软件

视频去水印怎么去&#xff0c;一直是视频编辑者们的热门话题。那么&#xff0c;如何去除频水印呢&#xff1f;接下来&#xff0c;我们将为您详细介绍视频去水印方法。 第一种方法&#xff1a; 首先通过浏览器打开 “ 51视频处理官网” 的网站。打开网站后&#xff0c;我们上传…...

北邮21硕后端开发笔记

blog 整理北邮21渣硕Java后端开发知识网络&#xff0c;阅读笔记以及技术博客&#xff0c;持续更新&#xff01;欢迎Star&#xff01; GitHub: https://github.com/WeiXiao-Hyy/blog Java 基础篇 一文带你搞懂final关键字 Java并发编程 fucking-java-concurrency解读你真…...

【Linux】系统优化:一键切换软件源与安装Docker

引言 在Linux系统安装完成后&#xff0c;进行一些必要的初始化设置是提升系统性能和用户体验的关键。本文将重点介绍两个实用的一键脚本&#xff1a;LinuxMirrors提供的软件源切换脚本和Docker安装脚本。这两个脚本将帮助我们简化配置安装过程。 一键切换软件源脚本 在Linux…...

【集装箱调度】基于粒子群算法实现考虑重量限制和时间约束的集装箱码头满载AGV自动化调度附matlab代码

% 交叉定位 - 最小二乘法定位算法模拟 % 参数设置 numIterations 1000; % 模拟迭代次数 maxDistance 1000; % 最远定位距离&#xff08;设定范围&#xff09; speedOfSound 343; % 声速&#xff08;单位&#xff1a;m/s&#xff09; % 预警机坐标 source [0, 0]; % 初始…...

使用 ESP32 和 PlatformIO (arduino框架)实现 Over-the-Air(OTA)固件更新

使用 ESP32 和 PlatformIO 实现 Over-the-Air&#xff08;OTA&#xff09;固件更新 摘要&#xff1a; 本文将介绍如何在 ESP32 上使用 PlatformIO 环境实现 OTA&#xff08;Over-the-Air&#xff09;固件更新。OTA 更新使得在设备部署在远程位置时&#xff0c;无需物理接触设…...

学习笔记——路由网络基础——汇总静态路由

4、汇总静态路由 (1)定义 静态路由汇总&#xff1a;多条静态路由都使用相同的送出接口或下一跳 IP 地址。(将多条路由汇总成一条路由表示) (2)目的 1.减少路由条目数量&#xff0c;减小路由表&#xff0c;加快查表速度 2.增加网络稳定性 (3)路由黑洞以及路由环路的产生…...

这10个python库,下载都超过5亿

python的库数不胜数。哪些库使用得最多呢。今天分享10个下载都超过5亿的python库。从高到低排序 第一名&#xff1a;Urllib3 下载次数&#xff1a;8.93亿次 介绍&#xff1a;Urllib3是一个功能强大且用户友好的HTTP客户端库&#xff0c;提供了许多Python标准库中没有的特性&…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述&#xff08;300字左右&#xff09; 在数据库开发中&#xff0c;面对大量数据的处理任务时&#xff0c;单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”&#xff0c;深入探讨如何通过批量操作和游标技术提…...