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

news2024/11/23 15:43:07

一、题目描述

给定一个整数数组 prices,其中第 prices[i] 表示第 i 天的股票价格。​

设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):

  • 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:
输入: prices = [1,2,3,0,2]
输出: 3 
解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]

示例 2:
输入: prices = [1]
输出: 0

二、题解

通过动态规划求解,时间复杂度和空间复杂度均为 O ( n ) O(n) O(n)

动态规划数组的状态转移过程:

{ 状态一(买入或保持买入) { 1. 保持前一天的买入 2. 在前一天保持卖出的基础上买入 3. 在前一天冷冻期的基础上买入 状态二(卖出):保持前一天的买入 状态三(保持卖出) { 1. 保持前一天的卖出 2. 保持前一天的保持卖出 状态四(冷冻期):前一天买入 \begin{cases} 状态一(买入或保持买入) \begin{cases} 1.保持前一天的买入\\ 2.在前一天保持卖出的基础上买入\\ 3.在前一天冷冻期的基础上买入 \end{cases}\\ 状态二(卖出):保持前一天的买入\\ 状态三(保持卖出) \begin{cases} 1.保持前一天的卖出\\ 2.保持前一天的保持卖出 \end{cases}\\ 状态四(冷冻期):前一天买入 \end{cases} 状态一(买入或保持买入) 1.保持前一天的买入2.在前一天保持卖出的基础上买入3.在前一天冷冻期的基础上买入状态二(卖出):保持前一天的买入状态三(保持卖出){1.保持前一天的卖出2.保持前一天的保持卖出状态四(冷冻期):前一天买入

#include "code.h"

class Solution {
public:
    int maxProfit(vector<int> &prices) {
        // records.at(i).at(0)表示买入或保持买入
        // records.at(i).at(1)表示卖出
        // records.at(i).at(2)表示保持卖出
        // records.at(i).at(3)表示冷冻期
        vector<vector<int>> records(prices.size(), vector<int>(4));

        records.at(0).at(0) = -prices.at(0);
        records.at(0).at(1) = 0;
        records.at(0).at(2) = 0;
        records.at(0).at(3) = 0;

        for (int i = 1; i < prices.size(); i++) {
            records.at(i).at(0) = max(records.at(i - 1).at(0),
                                      max(records.at(i - 1).at(2), 
                                          records.at(i - 1).at(3)) - prices.at(i));
            records.at(i).at(1) = prices.at(i) + records.at(i - 1).at(0);
            records.at(i).at(2) = max(records.at(i - 1).at(3), records.at(i - 1).at(2));
            records.at(i).at(3) = records.at(i - 1).at(1);
        }

        return max(records.at(records.size() - 1).at(1),
                   max(records.at(records.size() - 1).at(2),
                       records.at(records.size() - 1).at(3)));
    }
};

在这里插入图片描述

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

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

相关文章

Star History 月度开源精选|2023 年 6 月

上一期 Star History 月度精选是写给市场、运营人员的&#xff0c;而这一期回归到 DevTools 类别&#xff0c;我们六月发现了好一些开发者可以用的不错工具&#xff01; AI Getting Started 还记得 Supabase “Build in a weekend” 的广告词吗&#xff01;AI Getting Started…

10个项目瓜分5万美元,邀您参与Sui夏季黑客松最喜爱奖项投票

已经顺利完成第二阶段的项目选拔&#xff0c;40个项目成功入围最终的Demo Day。随着Sui Builder House巴黎站活动的临近&#xff0c;黑客松第三阶段Demo Day的气氛也逐渐热烈。 此次Demo Day将采用线上线下的形式为大家呈现精彩的项目路演&#xff0c;无法到达现场参与活动的朋…

vite + vue 白屏 Uncaught Syntaxerror: Unexpected token ‘?‘

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 一、问题的描述 突然收到业务方发来的反馈&#xff1a; 浏览器一片空白&#xff0c;开控制台输出&#xff1a;Uncaught Syntaxerror: Unexpected token ? 这个是语法错误。 二、 问题分析&#xff1a; 根据vit…

【数据分享】1929-2022年全球站点的逐年最大持续风速数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

母婴市场进入增长寒冬,AIGC能否为孩子王“供暖”?

文|螳螂观察 作者| 青月 人口负增长这件事&#xff0c;已经使母婴行业成了首批受到冲击的板块之一。用「母婴行业观察」的话来概括&#xff0c;就是“母婴行业正在进入销量低增长甚至零增长、营收利润低增长的挤压式竞争新阶段&#xff0c;并且已经开始了”。 行业内的玩家&…

BI分析中,经营和管理的关系到底是怎样的?

一家企业的CEO在聊BI的时候聊到的一个话题&#xff0c;这个级别的对话就不会聊具体的技术实现了&#xff0c;就会稍微务虚一些。但有时看似务虚的东西&#xff0c;深入去思考一下&#xff0c;其实也并不务虚&#xff0c;考虑的都是抽丝剥茧之后根源性的问题&#xff0c;把一些问…

接口测试原理及Postman详解

接口测试定义 接口是前后端沟通的桥梁&#xff0c;是数据传输的通道&#xff0c;包括外部接口、内部接口。内部接口又包括:上层服 务与下层服务接口&#xff0c;同级接口 生活中常见接口&#xff1a;电脑上的键盘、USB接口&#xff0c;电梯按钮&#xff0c;KFC下单 接口测试…

WebUI自动化必备技能-HTML和css知识详解

学习web自动化的前提条件&#xff1a;手工测试&#xff08;了解各种测试的知识&#xff09;、学习编程语言、学习Web基础、学习自动化测试工具 、学习自动化测试框架 、需要掌握前端的一些知识&#xff0c;无论学习语言还是前端知识&#xff0c;都是为了接下来的脚本和框架做铺…

【C语言】回调函数(qsort)与模拟实现

何思何虑&#xff0c;居心当如止水&#xff1b;勿取勿忘&#xff0c;为学当如流水。— 出自《格言联璧学问类》 解释&#xff1a;无思无虑&#xff0c;心境应当平静如水&#xff1b;不求冒进也不忘记&#xff0c;学业当如流水一般永无止境。 这篇博客我们将会理解回调函数这个概…

长达 1.7 万字的 explain 关键字指南!

当你的数据里只有几千几万&#xff0c;那么 SQL 优化并不会发挥太大价值&#xff0c;但当你的数据里去到了几百上千万&#xff0c;SQL 优化的价值就体现出来了&#xff01;因此稍微有些经验的同学都知道&#xff0c;怎么让 MySQL 查询语句又快又好是一件很重要的事情。要让 SQL…

桥梁监测是做什么的?桥梁结构监测方案

现代化大型桥梁是交通主干道的重要节点&#xff0c;对交通运输发展具有重大影响。然而&#xff0c;桥梁在长期使用过程中容易受到各种因素的影响&#xff0c;如自然灾害、车辆载荷、材料老化等&#xff0c;从而导致结构损伤和安全隐患。因此&#xff0c;对桥梁结构性能进行自动…

Vue3+Vite+Pinia+Naive后台管理系统搭建之八:构建 login.vue 登录页

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步Vue3.0 基础入门&#xff0c;快速入门。 项目所需要的图片&#xff0c;icon图标&#xff08;推荐&#xff1a;阿里巴巴矢量图标库&#xff09;自行获取&#xff0c;命名一致就行。 1. 构建 src/components/CopyRight.vu…

猿人学第一届刷题18

1.第十八题 jsvmp - 猿人学 问题: 1.第一页请求正常能返回数据 2.第二页开始之后出现{"error": "Unexpected token/Validation failed"} 分析&#xff1a; 1.第二页开始&#xff0c;有带加密参数&#xff0c;直接重发请求无果&#xff0c;应该带了时间戳…

优化产品知识库的 SEO 技巧

在当今数字化的商业环境中&#xff0c;为产品知识库进行搜索引擎优化&#xff08;SEO&#xff09;是至关重要的。随着用户越来越倾向于通过搜索引擎获取信息&#xff0c;优化产品知识库可以帮助你的企业在竞争激烈的市场中脱颖而出。 通过改进SEO&#xff0c;你可以帮助用户找到…

locust性能测试和分布式压测

一、工具介绍 Locust是一个开源的Python性能测试工具&#xff0c;用于模拟大量并发用户访问网站、API等&#xff0c;以测试系统的性能和稳定性。它的主要特点包括&#xff1a; 1.简单易用&#xff1a;Locust基于Python编写&#xff0c;使用方便&#xff0c;学习曲线较低。 2…

数据库基本操作--------MySQL 索引

目录 一、MySQL 索引 1&#xff0e;索引的概念 2&#xff0e;索引的作用 3&#xff0e;创建索引的原则依据 4&#xff0e;索引的分类和创建 &#xff08;1&#xff09;普通索引 ●直接创建索引 &#xff08;2&#xff09;唯一索引 &#xff08;3&#xff09;主键索引 ●创…

禁止浏览器自动填充密码功能,设置自动填充背景色。

禁止浏览器自动填充密码功能&#xff0c;设置自动填充背景色 1、禁止浏览器自动填充密码功能2、设置自动填充背景色&#xff08;阴影效果&#xff09; 1、禁止浏览器自动填充密码功能 text设置autocomplete“off” password设置 autocomplete“new-password” 两个一起设置&am…

雪花算法生成分布式ID源码分析及低频场景下全是偶数的解决办法

目录 雪花算法原理介绍 雪花算法源码分析 低频场景下都是偶数的原因 解决雪花算法的偶数问题 1、切换毫秒时使用随机数 2、抖动上限值加抖动序列号 雪花算法原理介绍 雪花算法(snowflake)最早是twitter内部使用的分布式下的唯一id生成算法&#xff0c;在2014年开源&…

【iOS】消息传递与消息转发

Objective-C是一门非常动态的语言&#xff0c;以至于确定调用哪个方法被推迟到了运行时&#xff0c;而非编译时。与之相反&#xff0c;C语言使用静态绑定&#xff0c;也就是说在编译期就能决定程序运行时所应该调用的函数&#xff0c;所以在C语言中&#xff0c; 如果某个函数没…

MySQL优化 | 如何正确使用索引

文章目录 一、简介1、索引的作用和优势2、索引的基本原理和数据结构 二、常见索引类型和适用场景1、B-Tree索引及其适用场景2、哈希索引及其适用场景 三、选择合适的索引策略1、 选择合适的列作为索引2、使用复合索引和最左前缀原则3、 覆盖索引的使用技巧 四、索引的创建和维护…