动态规划12 | ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结

本文主要是介绍动态规划12 | ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

视频讲解:https://www.bilibili.com/video/BV1rP4y1D7ku

https://programmercarl.com/0309.%E6%9C%80%E4%BD%B3%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E6%97%B6%E6%9C%BA%E5%90%AB%E5%86%B7%E5%86%BB%E6%9C%9F.html

  • 考点
    • 动态规划
    • 股票问题
  • 我的思路
    • 一开始考虑分3个状态,持有股票、不持有股票(前一天刚卖)、不持有股票(卖了超过一天),写代码的过程中发现后面两个状态可以合并为一个状态不持有股票
    • 递推公式
      • 持有股票的状态,可以由两种情况取较大者推得:前一天持有股票的dp值,两天之前不持有股票的dp值减去今天买入股票的价格
      • 不持有股票的状态,可以由两种情况取较大者推得:前一天不持有股票的dp值,前一天持有股票的dp值加上今天卖出股票的价格
    • 最后的返回值为最后一天两种状态里的较大者
  • 视频讲解关键点总结
    • 和我的一致
  • 我的思路的问题
  • 代码书写问题
  • 可执行代码
class Solution:def maxProfit(self, prices: List[int]) -> int:if len(prices) == 1:return 0dp = [[0] * 2 for _ in range(len(prices))]dp[0][0] = -prices[0]dp[1][0] = max(dp[0][0], -prices[1])dp[1][1] = max(dp[0][1], dp[0][0] + prices[1])for i in range(2, len(prices)):dp[i][0] = max(dp[i - 1][0], dp[i - 2][1] - prices[i])dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i])return max(dp[-1][0], dp[-1][1])

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

视频讲解:https://www.bilibili.com/video/BV1z44y1Z7UR
https://programmercarl.com/0714.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%E5%90%AB%E6%89%8B%E7%BB%AD%E8%B4%B9%EF%BC%88%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%EF%BC%89.html

  • 考点
    • 动态规划
    • 股票买卖
  • 我的思路
    • 本题其实就是在最基础的股票买卖上加了一个手续费,只要在每次买入股票的同时把手续费算上即可
  • 视频讲解关键点总结
    • 思路一致
  • 我的思路的问题
  • 代码书写问题
  • 可执行代码
class Solution:def maxProfit(self, prices: List[int], fee: int) -> int:if len(prices) == 1:return 0dp = [[0] * 2 for _ in range(len(prices))]dp[0][0] = -prices[0] - feefor i in range(1, len(prices)):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 max(dp[-1][0], dp[-1][1])

总结

  • 见我的另一篇文章

这篇关于动态规划12 | ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827524

相关文章

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依