动态规划——买卖股票的最佳时机含手续费

news2024/11/26 17:35:07

题目链接

leetcode在线oj题——买卖股票的最佳时机含手续费

题目描述

给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。

你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。

返回获得利润的最大值。

注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。

题目示例

示例1

输入:prices = [1, 3, 2, 8, 4, 9], fee = 2
输出:8
解释:能够达到的最大利润:
在此处买入 prices[0] = 1
在此处卖出 prices[3] = 8
在此处买入 prices[4] = 4
在此处卖出 prices[5] = 9
总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8

示例2

输入:prices = [1,3,7,5,10,3], fee = 3
输出:6

题目提示

  • 1 <= prices.length <= 5 * 104
  • 1 <= prices[i] < 5 * 104
  • 0 <= fee < 5 * 104

解题思路

这道题由于涉及到买卖,因此有两个状态,分别用f[i]代表第i天是买入状态时的最大利润,g[i]代表第i天是卖出状态的最大利润

根据题目描述,可以画出状态转移图
在这里插入图片描述
根据状态转移图,可以得到状态转移方程,每个状态是其他状态转移过来时的较大值

f[i] = Math.max(f[i - 1], g[i - 1] - prices[i]);
g[i] = Math.max(g[i - 1], f[i - 1] + prices[i] - fee);

最后返回这两个状态中最后一个位置的较大值即可

完整代码

class Solution {
    public int maxProfit(int[] prices, int fee) {
        int n = prices.length;
        int[] f = new int[n];
        int[] g = new int[n];
        f[0] = -prices[0];
        for (int i = 1; i < n; i++){
            f[i] = Math.max(f[i - 1], g[i - 1] - prices[i]);
            g[i] = Math.max(g[i - 1], f[i - 1] + prices[i] - fee);
        }
        return Math.max(f[n - 1], g[n - 1]);
    }
}

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

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

相关文章

美的代工厂雪祺电气过会:拟募资6亿元,产能利用率下滑仍要扩产

撰稿|行星 来源|贝多财经 近日&#xff0c;深圳证券交易所主板披露的信息显示&#xff0c;合肥雪祺电气股份有限公司&#xff08;以下简称“雪祺电气”&#xff09;获得上市委会议通过。据贝多财经了解&#xff0c;雪祺电气的上市申请材料于2023年2月28日获得受理。 天眼查信…

Ceph 块存储系统 RBD 接口

-创建 Ceph 块存储系统 RBD 接口- 1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池 ceph osd pool create rbd-demo 64 642、将存储池转换为 RBD 模式 ceph osd pool application enable rbd-demo rbd3、初始化存储池 rbd pool init -p rbd-demo # -p 等同于 --pool4、…

前端多行文本省略号

.title {height: 4rem;line-height: 2rem;// 多行文本省略号overflow: hidden;font-size: 1.4rem;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;}

Rancher 系列文章-Rancher 升级

概述 之前在 天翼云上用 4 台机器安装了一个 1 master&#xff08;及 etcd) 3 node 的 K3S 集群&#xff0c;并在其上使用 Helm 安装了 Rancher 2.6.3 版本。 前几天发现 Rancher 官方推荐的最新版为&#xff1a;v2.6.4 所以决定先后对 Rancher 和 K3S 集群进行升级。 根据…

迁移到强化学习的 6 个理由

胡巴雷拉 从 https://en.wikipedia.org/wiki/Reinforcement_learning 一、说明 强化学习&#xff08;RL&#xff09;是机器学习的一个领域&#xff0c;涉及智能体应该如何在环境中采取行动&#xff0c;以最大化累积奖励的概念。强化学习是三种基本的机器学习范式之一&#xff…

RHCSA/RHCE考试模拟环境搭建

RHCSA/RHCE考试模拟环境搭建 1. 使用VMware workstation部署2. 使用U盘通过物理服务器部署1. 使用VMware workstation部署 RHCSA环境内存至少16G,RHCE环境内存至少12G,处理器配置8核   网络适配器选择NAT方式   取消显示器的“加速3D图形”:   另外添加一块硬…

Time Series Classification

时间序列分类 我第一次遇到时间序列分类的概念时&#xff0c;我最初的想法是&#xff1a;我们如何对时间序列进行分类&#xff1f;时间序列分类的数据是什么样子的&#xff1f; 可以想象&#xff0c;时间序列分类数据不同于常规分类问题&#xff0c;因为属性具有有序的序列。…

【业务功能篇47】 idea自动生成代码插件EasyCode

业务越来越多需求的情况下&#xff0c;对应的表也是逐渐增多&#xff0c;许多的文件都是一些重复操作&#xff0c;比如表的实体类&#xff0c;mapper接口类&#xff0c;xml映射文件&#xff0c;业务层接口&#xff0c;接口实现类等。亟需一个自动化生成固定代码文件的工具&…

【24】SCI易中期刊推荐——计算机人工智能(中科院4区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

【Java从0到1学习】02 Java 开发环境配置

1. 安装 1、方式一&#xff1a;进入官网https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html下载JDK 方式二&#xff1a;博主提供的百度网盘版本下载&#xff1a;https://pan.baidu.com/s/1liNHej2hGXJU_L8yQNRZmQ?pwd9w3f 2、下载后双击即可安装…

4、VScode、WAMP、Xdebug调试

1、查看Xdebug的版本 Xdebug是随WAMP一起安装的&#xff0c;版本号可以通过PHP扩展菜单下查看&#xff0c;为3.1.6 2、配置系统环境变量 将PHP的安装目录&#xff0c;添加到系统的环境变量中&#xff0c;配置完成后&#xff0c;通过命令行 输入命令 PHP -V&#xff0c;查看是…

33. bio和nio

文章目录 一、bio网络模型1.1 bio网络模型示意图1.2 bio网络模型缺点 二、NIO网络模型2.1 nio网络模型示意图2.2 nio网络模型的改进 三、NIO核心- Channel&#xff08;通道&#xff09;3.1 Channel 简介3.2 Channel 实现类3.3 bio的socket 和 nio的channel代码实现 四、NIO核心…

“小小消防员 立志勇向前”未成年人就业创业意识技能指导培训活动

为培养未成年人沉着冷静处理突发事件的应变能力&#xff0c;提高未成年人的个人技能和社会实践能力&#xff0c;2023年7月13日&#xff0c;在吴忠市利通区民政局的支持指导下&#xff0c;吴忠市利通区新时代文明传播公益服务中心组织开展了“小小消防员 立志勇向前”—未成年人…

求根节点到叶节点数字之和

给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字&#xff1a; 例如&#xff0c;从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。 计算从根节点到叶节点生成的 所有数字之和 。…

ubuntu22.0.4 tar命令不管用

问题&#xff1a; 解决方法&#xff1a;sudo tar sudo tar -zxvf flex-2.5.39.tar.gz不知道为什么需要sudo 去执行才可以正常工作。

关于电脑显示器屏幕看不出灰色,灰色和白色几乎一样无法区分,色彩调整方法

问题&#xff1a; 电脑显示器屏幕看不出灰色&#xff0c;灰色和白色几乎一样无法区分。白色和灰色有色差。 解决方法&#xff1a; 打开“控制面板” ->“色彩管理” ->“高级” ->“校正显示器” 在下一步调节中调成中间这一个实例的样子就可以了 进行微调&#x…

Java - Iterator迭代器

Iterator(迭代器) Iterator介绍 1、Iterator对象称为迭代器&#xff0c;主要用于遍历 Collection 集合中的元素 2、所有实现了Collection 接口的集合类都有一个iterator()方法&#xff0c;用以返回一个实现了Iterator接口的对象&#xff0c;即可以返回一个迭代器 3、Iterat…

我在VScode学Java类与对象(Java显式参数和隐式参数、静态方法+main方法、Java访问修饰符、static关键字、Java的包、对象数组)第三辑

我的个人博客主页&#xff1a;如果’真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客&#xff1a;《我在VScode学Java》 续《我在VScode学Java&#xff08;Java的类与对象&#xff09;》 方法会操作对象并访问他们的实例字段。 伍._. 显式参…

springboot整合ehcache和redis实现多级缓存实战案例

一、概述 在实际的工作中&#xff0c;我们通常会使用多级缓存机制&#xff0c;将本地缓存和分布式缓存结合起来&#xff0c;从而提高系统性能和响应速度。本文通过springboot整合ehcache和redis实现多级缓存案例实战&#xff0c;从源码角度分析下多级缓存实现原理。 二、实战案…

STM32F407-- DMA使用

目录 1. DMA结构体 STM32F103&#xff1a; STM32F407&#xff1a; 2. F4系列实现存储器到存储器数据传输 1&#xff09;结构体配置&初始化 2&#xff09;主函数 补充知识点&#xff1a;关于变量存储的位置&#xff0c;关于内部存储器一般存储什么内容 3. F4系列实现…