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

news2025/1/18 9:49:38

题目链接

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

题目描述

注意点

  • 卖出股票后,无法在第二天买入股票 (即冷冻期为 1 天)
  • 不能同时参与多笔交易(必须在再次购买前出售掉之前的股票)
  • 可以尽可能地完成更多的交易(多次买卖一支股票)
  • 计算最大利润
  • 0 <= prices[i] <= 1000

解答思路

  • 最初想到的是深度优先遍历,通过买入、卖出、冷冻期、跳过操作四种状态深度搜索所有的情况,找到最大利润,但是最后超出时间限制
  • 参照题解使用动态规划完成本题,用 f[i] 表示第 i 天结束之后的「累计最大收益」。根据题目描述,由于最多只能同时买入(持有)一支股票,并且卖出股票后有冷冻期的限制,因此会有三种不同的状态:
    (1)目前持有一支股票,对应的「累计最大收益」记为 f[i][0];
    (2)目前不持有任何股票,并且处于冷冻期中,对应的「累计最大收益」记为 f[i][1];
    (3)目前不持有任何股票,并且不处于冷冻期中,对应的「累计最大收益」记为 f[i][2]。

代码

class Solution {
    public int maxProfit(int[] prices) {
        if (prices.length == 0) {
            return 0;
        }
        int n = prices.length;
        /**
          * dp[i][0]对应第i天持有一支股票的累积最大收益(第i - 1天可能持有股票,也可能未持有第i - 1天才买入)
          * dp[i][1]对应第i天不持有股票且处于冷冻期的累积最大收益(第i - 1天必定卖出)
          * dp[i][2]对应第i天不持有股票且不处于冷冻期的累积最大收益(第i - 1天可能处于冷冻期,也可能不处于冷冻期)
         */
        int[][] dp = new int[n + 1][3];
        dp[0][0] = -prices[0];
        for (int i = 1; i <= n; i++) {
            dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][2] - prices[i - 1]);
            dp[i][1] = dp[i - 1][0] + prices[i - 1];
            dp[i][2] = Math.max(dp[i - 1][1], dp[i - 1][2]);
        }
        return Math.max(dp[n][1], dp[n][2]);
    }
}

关键点

  • 动态规划的思想
  • 理解每天持有股票状况的三种状态
  • 理解第i天持有股票状况的三种状态是由第i - 1天的哪些状态决定

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

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

相关文章

l8-d11 TCP连接管理与UDP协议

一、三次握手 TCP 建立连接的过程叫做握手。 采用三报文握手&#xff1a;在客户和服务器之间交换三个 TCP 报文段&#xff0c;以防止已失效的连接请求报文段突然又传送到了&#xff0c;因而产生 TCP 连接建立错误。 二、四次挥手 TCP 连接释放过程比较复杂。 数据传输结束后…

2、k-means聚类算法sklearn与手动实现

本文将对k-means聚类算法原理和实现过程进行简述 算法原理 k-means算法原理较简单&#xff0c;基本步骤如下&#xff1a; 1、假定我们要对N个样本观测做聚类&#xff0c;要求聚为K类&#xff0c;首先选择K个点作为初始中心点&#xff1b; 2、接下来&#xff0c;按照距离初始中…

蓝桥杯官网填空题(三角形的面积)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 已知三角形三个顶点在直角坐标系下的坐标分别为&#xff1a; txt (2.3, 2.5) (6.4, 3.1) (5.1, 7.2) txt 求该三角形的面积。 注意&#xff0c;要提交的是一个小…

解决ROS2 humble版本源码编译中resdep init及rosdep update失败的问题

网上有在/etc/hosts中添加ip地址的方法&#xff0c;使用了不成功&#xff0c;具体做法如下&#xff0c;仅供参考&#xff1a; a.打开查询ip的网址&#xff1a; https://site.ip138.com b.输入&#xff1a;raw.githubusercontent.com c.执行sudo vi /etc/hosts 将获取到的ip添…

docker系列(3) - 常用软件安装

文章目录 3. docker安装常用软件3.1 安装nginx3.2 安装redis3.3 安装mysql3.4 部署springboot程序3.4.1 编写dockerfile3.4.2 构建镜像3.4.3 启动镜像 3. docker安装常用软件 3.1 安装nginx docker pull nginx#挂载启动 docker run -it -d \ --namenginx \ --networkpub_netw…

L2 数据仓库和Hive环境配置

1.数据仓库架构 数据仓库DW主要是一个用于存储&#xff0c;分析&#xff0c;报告的数据系统。数据仓库的目的是面向分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持。-DW不产生和消耗数据 结构数据&#xff1a;数据库中数据&#xff0c;CSV文件 直接导入DW非结构…

2023高教杯数学建模2:DE题+参考论文、代码

2023高教杯数学建模2&#xff1a;DE题 写在最前面E题D题2014C题优秀论文笔记问题一&#xff08;求解母猪年均产仔量以达到或超过盈亏平衡点&#xff09;问题二&#xff08;求解小猪选为种猪的比例和母猪的存栏数&#xff09;问题三&#xff08;确定最佳经营策略&#xff0c;计算…

docker系列(4) - docker镜像制作

文章目录 4. docker镜像4.1 联合文件系统(UnionFS)4.2 Docker镜像加载原理4.3 docker commit(扩展镜像)(非常重要)4.3.1 案例4.3.1.1 下载ubuntu镜像4.3.1.2 安装vim4.3.1.3 commit新的镜像4.3.1.3 验证新的镜像 4. docker镜像 4.1 联合文件系统(UnionFS) Union文件系统(Unio…

树树树树树

//先序遍历 void PreOrder(BiTree T){if(T!NULL){printf("%c",T->data);PreOrder(T->lchild);PreOrder(T->rchild);} } //后序遍历 void PostOrder(BiTree T){if(T!NULL){PostOrder(T->lchild);PostOrder(T->rchild);printf("%c",T->dat…

美国星链再迎挑战,中国最有钱的通信企业争夺卫星互联网服务

随着一家手机企业发布5G卫星手机&#xff0c;卫星互联网服务的热度大增&#xff0c;业界人士指出目前能提供卫星互联网服务的仅有中国电信&#xff0c;但是中国移动已不甘落后&#xff0c;正在测试低轨道卫星互联网服务&#xff0c;这也是中国与美国星链竞争的序幕。 据了解日前…

表的约束类型

空属性约束 mysql有空属性和非空属性&#xff1a;null和not null 数据库默认字段基本都是字段为空&#xff0c;但是实际开发时&#xff0c;尽可能保证字段不为空&#xff0c;因为数据为空没办法参与运算 所以我们在设计数据库表的时候&#xff0c;一定要在表中进行限制&…

嵌入式:驱动开发 Day2

作业&#xff1a;字符设备驱动&#xff0c;完成三盏LED灯的控制 驱动代码&#xff1a; mychrdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include &q…

oracle表空间释放

oracle表空间释放 1&#xff09;查询表空间信息2&#xff09;查询指定表空间下各个表的表空间使用情况3-1&#xff09;可以直接释放3-2) 可以move3-3&#xff09;重新排列 1&#xff09;查询表空间信息 selecta.tablespace_name as "表空间名",total as "表空间…

初识Java 7-1 多态

目录 向上转型 难点 方法调用绑定 产生正确的行为 可扩展性 陷阱&#xff1a;“重写”private方法 陷阱&#xff1a;字段与静态方法 构造器和多态 构造器的调用顺序 继承和清理 构造器内部的多态方法行为 协变返回类型 使用继承的设计 替换和扩展 向下转型和反射…

Java开发之Mysql【面试篇 完结版】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、知识体系二、Mysql-优化1. 优化-如何定位慢查询① 问题引入② 解决方案③ 问题总结④ 实战面试 2. 优化-sql执行很慢&#xff0c;如何解决① 问题引入② 解…

AI项目五:结印动作识别

若该文为原创文章&#xff0c;转载请注明原文出处。 感谢恩培大佬对项目进行了完整的实现&#xff0c;并将代码进行开源&#xff0c;供大家交流学习。 恩培大佬开源地址&#xff0c;有兴趣的可以去复现一下。GitHub - enpeizhao/CVprojects: computer vision projects | 计算机…

计算机网路学习-time_wait过多

四次挥手 调试命令 netstat -an|awk ‘/tcp/ {print $6}’|sort|uniq -c netstat -an 列出系统中所有处于活动状态的网络连接信息&#xff0c;包括 IP 地址、端口号、协议等。 其中&#xff0c;第六列是tcp的状态。 Proto Recv-Q Send-Q Local Address Foreign Addr…

Aidlux工业视觉缺陷检测

Aidlux工业视觉缺陷检测 1. AidLux简介 AidLux是成都阿加犀智能科技有限公司自主研发的融合架构平台&#xff0c;提供Android&#xff0f;鸿蒙&#xff0b;Linux融合系统&#xff0c; 双系统既能独立使用又能相互通信。 阿加犀致力于人工智能核心技术持续创新&#xff0c; 独…

CSS元素浮动

概述 浮动简介 在最初&#xff0c;浮动是用来实现文字环绕图片效果的&#xff0c;现在浮动是主流的页面布局方式之一。 元素浮动后的特点 脱离文档流。不管浮动前是什么元素&#xff0c;浮动后&#xff0c;默认宽与高都是被内容撑开的&#xff08;尽可能小&#xff09;&am…

AKF拆分原则

在分布式软件环境下&#xff0c;为了保障分布式架构的可靠性、可扩展、高性能&#xff0c;通常会通过集群、扩容、数据分治等思想来实现&#xff0c;比如很多中间件的使用Redis、ZK、Kafka等&#xff0c;都可以通过这种设计思想来提高系统架构吞吐量。AKF是一个系统化的拓展思想…