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

算法修炼Day51|● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

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

309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode)

1.思路

初始化dp[i][j]数组,表示第i天的最大利润为dp[i][j].
精确的定义状态是个难点,可以定义四种状态:持有股票(当天买入、前一天持有、前一天为保持卖出的状态)、卖出状态(前一天为冷冻期、前一天为卖出状态)、卖出股票(前一天持有股票当天卖出+prices[i])、冷冻期(前一天卖出的状态)

2.代码实现

 1class Solution {2    public int maxProfit(int[] prices) {345        int len = prices.length;67        int[][] dp = new int[len][4];8        // 四种状态9        // dp[i][0] 持有股票;dp[i][1] 保持卖出股票;dp[i][2]卖出股票;dp[i][3]冷冻期
10
11
12        // 初始化dp数组
13        dp[0][0] = -prices[0];
14        dp[0][1] = 0;
15        dp[0][2] = 0;
16        dp[0][3] = 0;
17
18        for (int i = 1; i < len; i++) {
19            // 持有股票:①前一天持有 ②当天买入 ③冷冻期下一天买入
20            dp[i][0] = Math.max(dp[i - 1][0], Math.max(dp[i - 1][3] - prices[i], dp[i - 1][1] - prices[i]));
21            // 保持卖出股票:①冷冻期②前一天就是保持卖出状态
22            dp[i][1] = Math.max(dp[i - 1][3], dp[i - 1][1]);
23            // 卖出股票操作
24            dp[i][2] = dp[i - 1][0] + prices[i];
25            // 冷冻期
26            dp[i][3] = dp[i - 1][2];
27        }
28
29        return Math.max(dp[len - 1][1], Math.max(dp[len - 1][2], dp[len - 1][3]));
30    }
31}
32

3.复杂度分析

时间复杂度:O(n).
空间复杂度:O(n).

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

714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode)

1.思路

初始化dp[][][]数组,确定两种状态:持有股票和不持有股票,进行状态转移推演即可。

2.代码实现

 1class Solution {2    public int maxProfit(int[] prices, int fee) {3        int len = prices.length;45        // dp[i][j]67        int[][] dp = new int[len][2];8        dp[0][0] = -prices[0];9        // dp[0][1] = 0; 
10        for (int i = 1; i < len; i++) {
11            // 持有状态:①当天买入;②前一天持有
12            dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
13            // 不持有状态:①前一天就是卖出状态;②当天卖出
14            dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i] - fee);
15        }
16
17        return dp[len - 1][1];
18    }
19}
20

3.复杂度分析

时间复杂度:O(n).
空间复杂度:O(n).

相关文章:

算法修炼Day51|● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

LeetCode:309.最佳买卖股票时机含冷冻期 309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 1.思路 初始化dp[i][j]数组&#xff0c;表示第i天的最大利润为dp[i][j]. 精确的定义状态是个难点&#xff0c;可以定义四种状态&#xff1a;持有股票&#…...

LVS-DR模型实例

一、LVS-DR集群介绍 LVS-DR&#xff08;Linux Virtual Server Director Server&#xff09;工作模式&#xff0c;是生产环境中最常用的一 种工作模式。 1、LVS-DR 工作原理 LVS-DR 模式&#xff0c;Director Server 作为群集的访问入口&#xff0c;不作为网关使用&#xff0…...

Vue面试题

1. vue优点 轻量级速度快简单易学低耦合可重用性独立开发文档齐全&#xff0c;且文档为中文文档 2. ## vue中组件间传值 prop/$emit 父子组件传值 ref 和 $parent/$children 父子组件传值 eventBus($emit/$on) 父子&#xff0c;隔代&#xff0c;兄弟组件传值 $attrs/$listeners…...

使用图像处理算法检测金属表面的生锈区域: Python实现及步骤解析

摘要&#xff1a; 本文主要介绍如何使用Python和OpenCV库来实现对金属表面的生锈区域的检测。图像处理在工业领域有着广泛的应用&#xff0c;尤其是对材料的表面缺陷的检测。本文将详细阐述该算法的具体实现步骤&#xff0c;并提供完整的Python代码示例。 1. 引言 金属的锈蚀是…...

通过爬虫抓取上市企业利润表并在睿思BI中展示

睿思BI从v5.3开始支持网络爬虫&#xff0c;可以从指定URL抓取表格数据&#xff0c;本示例实现从网络上抓取上市企业招商银行的利润表数据&#xff0c;并在睿思BI中进行展现。 功能演示URL&#xff1a;https://www.ruisitech.com/rsbi-ultimate/#/dashboard/ShareView?token31…...

填充柄功能

单元格右下角十字符号 顺序式填充 输入1,2&#xff0c;直接拉取即可实现顺序1到10. 复制式填充 CtrlD或者拉取&#xff0c;选择右下角复制单元格。 规律式填充 输入星期一&#xff0c;星期二&#xff0c;下拉一直可以到星期日 自定义填充 选择文件-》选项-》自定义序列 输…...

Python爬虫性能优化:多进程协程提速实践指南

目录 1. 多进程爬虫的实现&#xff1a; 1.1 将爬虫任务划分成多个子任务&#xff1a; 1.2 创建进程池&#xff1a; 1.3 执行任务&#xff1a; 1.4 处理结果&#xff1a; 代码示例 2. 协程爬虫的实现&#xff1a; 2.1 定义异步爬虫函数&#xff1a; 2.2 创建事件循环&a…...

mongodb export(2023新)

之前的mongodb export发现不能用了&#xff0c;T3带ui的版本&#xff0c;试用到期不支持导出。 根据文档&#xff0c;是因为server版本更新后 tool版本没有升级&#xff0c;(refs文档) 按文档下载bin&#xff0c;后解压到更新本地文件夹&#xff0c;替换/usr/local/bin里的文…...

css-flex使用

文章目录 flex弹性容器属性flex-directionflex-wrapflex-flowalign-itemsjustify-contentalign-content主轴和侧轴 弹性元素默认大小属性flex-growflex-shrinkalign-selfflex-basisflexorder 高度坍塌flex布局子元素宽度超出父元素 flex 弹性盒&#xff0c;伸缩盒&#xff0c;…...

SAP安全库存-安全库存共享、安全库存简介

SAP系统中的安全库存用于管理计划外和计划内的库存需求,在某些行业中,由于不同的情况,如意外损耗、损坏、环境问题、制造工艺问题、需求增加等,通常会出现意外的库存需求。 SAP提供了维护安全库存的处理方式来处理这样的问题,安全库存的字段信息在主数据视图中,在物料需…...

CentOS自己搭建时钟同步服务实操

目录 1、产生背景 2、操作过程 3、客户端操作 4、ntpd和ntpdate的区别 5、参考文章 1、产生背景 因为公司业务&#xff0c;需要使用一些网关设备上报监测实时数据&#xff0c;为了保障数据时钟一致性&#xff0c;所以需要提供一天时钟校验服务器。因为原来这个厂家的网关设…...

高阶数据结构-图

高阶数据结构-图 图的表示 图由顶点和边构成&#xff0c;可分为有向图和无向图 邻接表法 图的表示方法有邻接表法和邻接矩阵法&#xff0c;以上图中的有向图为例&#xff0c;邻接表法可以表示为 A->[(B,5),(C,10)] B->[(D,100)] C->[(B,3)] D->[(E,7)] E->[…...

Linux/Ubuntu 的日常升级和安全更新,如何操作?

我安装的是Ubuntu 20.04.6 LTS的Windows上Linux子系统版本&#xff0c;启动完成后显示&#xff1a; Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.90.4-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.c…...

Linux自动挂载U盘

文章目录 UEDV规则文件挂在U盘规则&#xff0c;创建.ruiles将下放代码放入 UEDV规则文件 规则文件是 udev 里最重要的部分&#xff0c;默认是存放在 /etc/udev/rule.d/ 下。所有的规则文件必须以".rules" 为后缀名。 下面是一个简单的规则&#xff1a; KERNEL"…...

Edge浏览器免费使用GPT3.5

搜索sider,安装Sidebar插件 注册账号即可每天免费使用30次。 Sider: ChatGPT侧边栏,GPT-4, 联网, 绘图...

面试题--redis篇

一、Redis支持的数据类型&#xff1f; String (字符串) Hash (哈希) List (列表) Set (集合) zset (sorted set&#xff1a;有序集合) 1. String&#xff08;字符串&#xff09; 格式: set key value string 类型是二进制安全的&#xff0c;意思是 redis 的 string 可以包含任…...

Android Studio 新建module报错:No signature of method

android平台uni原生插件开发过程中&#xff0c;使用Android Studio 新增 module 报错 选择app --> create new module &#xff0c;填写相关信息 Android Studio 新建module报错&#xff1a; 原因&#xff1a;Android Studio 版本过高&#xff0c;新增了namespace&#x…...

python使用dir()函数获取对象中可用的属性和方法(看不到python源码又想知道怎么调用,DLL调用分析,SDK二次开发技巧)

有时候调用一些SDK&#xff0c;但是人家又是封装成dll文件形式调用的&#xff0c;这时没法看源码&#xff0c;也不想看其对应的开发文档&#xff08;尤其有些开发文档写得还很难懂&#xff0c;或者你从某个开源社区拿过来&#xff0c;就根本没找到开发文档&#xff09;&#xf…...

【MySQL系列】SQL语句入门(创建删除操作)、字符集和数据类型详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …...

谈谈召回率(R值),准确率(P值)及F值

通俗解释机器学习中的召回率、精确率、准确率&#xff0c;一文让你一辈子忘不掉这两个词 赶时间的同学们看这里&#xff1a;提升精确率是为了不错报、提升召回率是为了不漏报 先说个题外话&#xff0c;暴击一下乱写博客的人&#xff0c;网络上很多地方分不清准确率和精确率&am…...

Gofile下载器终极指南:快速批量下载Gofile文件的全攻略

Gofile下载器终极指南&#xff1a;快速批量下载Gofile文件的全攻略 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 在当今数字时代&#xff0c;文件共享和传输已成为日常工…...

AMD显卡运行CUDA的终极方案:ZLUDA 5分钟快速上手指南

AMD显卡运行CUDA的终极方案&#xff1a;ZLUDA 5分钟快速上手指南 【免费下载链接】ZLUDA CUDA on AMD GPUs 项目地址: https://gitcode.com/gh_mirrors/zlu/ZLUDA 你是否曾因为手中的AMD显卡无法运行心爱的CUDA应用而感到困扰&#xff1f;无论是Blender渲染、PyTorch机器…...

AI提示词极限赛:突破边界的艺术

好的&#xff0c;这是一份关于AI提示词极限赛的技术文章大纲&#xff1a;标题&#xff1a; 突破边界&#xff1a;AI提示词极限赛的技术深度解析与实战策略摘要&#xff1a; 探讨AI提示词极限赛的核心技术要点、优化策略与评估方法&#xff0c;助力参赛者提升提示词设计能力。关…...

ARM错误记录寄存器架构与RAS扩展解析

1. ARM错误记录寄存器架构概述在ARM架构的可靠性、可用性和可维护性&#xff08;RAS&#xff09;扩展中&#xff0c;错误记录寄存器扮演着核心角色。这套机制通过一组精确定义的寄存器&#xff0c;为系统提供了硬件错误的检测、记录和处理能力。作为一位长期从事ARM平台开发的工…...

MobileClaw:为OpenClaw AI Agent打造移动优先的聊天界面

1. 项目概述&#xff1a;为本地AI Agent打造一款移动优先的聊天界面 如果你和我一样&#xff0c;热衷于在本地运行大型语言模型&#xff0c;并且对OpenClaw这类AI Agent框架的强大能力着迷&#xff0c;那你一定也遇到过和我一样的烦恼&#xff1a;在手机上查看和管理Agent对话…...

长期使用Taotoken聚合服务对开发运维效率的实际提升

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken聚合服务对开发运维效率的实际提升 在构建和迭代基于大语言模型的应用时&#xff0c;开发者常常需要面对一个现实…...

终极指南:如何用dnSpyEx完美调试和编辑.NET 8程序集

终极指南&#xff1a;如何用dnSpyEx完美调试和编辑.NET 8程序集 【免费下载链接】dnSpy Unofficial revival of the well known .NET debugger and assembly editor, dnSpy 项目地址: https://gitcode.com/gh_mirrors/dns/dnSpy 在当今快速发展的.NET生态中&#xff0c;…...

别再死记硬背了!用“餐厅经营”的比喻,5分钟搞懂批处理、分时和实时操作系统的区别

用餐厅经营智慧解锁操作系统核心概念 想象一下走进一家餐厅&#xff0c;菜单上的选择琳琅满目&#xff0c;服务员穿梭忙碌&#xff0c;厨房里热火朝天——这个看似普通的就餐场景&#xff0c;其实暗藏着计算机操作系统的精妙设计。就像餐厅需要高效协调顾客、服务员和厨师的关系…...

MCP Shrimp Task Manager 核心功能深度解析:任务规划、执行与验证的全流程

MCP Shrimp Task Manager 核心功能深度解析&#xff1a;任务规划、执行与验证的全流程 【免费下载链接】mcp-shrimp-task-manager Shrimp Task Manager is a task tool built for AI Agents, emphasizing chain-of-thought, reflection, and style consistency. It converts na…...

保姆级教程:用ISO镜像给Vcenter 6.7 U3e无损升级到7.0(附每一步截图和注意事项)

从vCenter 6.7 U3e到7.0的无损升级实战指南 在虚拟化运维领域&#xff0c;vCenter的版本迭代往往意味着性能提升和功能增强。对于仍在使用6.7版本的管理员而言&#xff0c;升级到7.0不仅能获得更高效的资源管理能力&#xff0c;还能体验更直观的操作界面。本文将详细解析从6.7 …...