代码随想录算法训练营Day49 | 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV | Python | 个人记录向

本文目录

  • 123.买卖股票的最佳时机III
    • 做题
    • 看文章
  • 188.买卖股票的最佳时机IV
    • 做题
  • 以往忽略的知识点小结
  • 个人体会

123.买卖股票的最佳时机III

代码随想录:123.买卖股票的最佳时机III
Leetcode:123.买卖股票的最佳时机III

做题

无思路。

看文章

  1. 确定dp数组以及下标的含义。一天一共就有五个状态:
    • 没有操作 (其实我们也可以不设置这个状态)
    • 第一次持有股票
    • 第一次不持有股票
    • 第二次持有股票
    • 第二次不持有股票
class Solution:def maxProfit(self, prices: List[int]) -> int:size = len(prices)dp = [[0] * 5 for _ in range(size)]dp[0][1] = -prices[0]dp[0][3] = -prices[0]for i in range(1, size):dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i])dp[i][2] = max(dp[i-1][2], dp[i-1][1] + prices[i])dp[i][3] = max(dp[i-1][3], dp[i-1][2] - prices[i])dp[i][4] = max(dp[i-1][4], dp[i-1][3] + prices[i])return dp[size-1][4]

时间复杂度:O(n)
空间复杂度:O(n × 5)

188.买卖股票的最佳时机IV

代码随想录:188.买卖股票的最佳时机IV
Leetcode:188.买卖股票的最佳时机IV

做题

同理进行推导,这道题应该可以覆盖所有情况了。需要注意的是,迭代变量要看清(k是参数,不是迭代变量)。

class Solution:def maxProfit(self, k: int, prices: List[int]) -> int:size = len(prices)if size == 0:return 0dp = [[0] * (k * 2 + 1) for _ in range(size)]for i in range(k):dp[0][i*2+1] = -prices[0]for i in range(1, size):for j in range(k):dp[i][2*j+1] = max(dp[i-1][2*j+1], dp[i-1][2*j] - prices[i])dp[i][2*j+2] = max(dp[i-1][2*j+2], dp[i-1][2*j+1] + prices[i])return dp[size-1][2*k]

时间复杂度: O(n * k),其中 n 为 prices 的长度
空间复杂度: O(n * k)

以往忽略的知识点小结

  • 买卖股票的最佳时机通用解法

个人体会

完成时间:2h。
心得:买卖股票的最佳时机题型结束,目前已经有通用解法。

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

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

相关文章

结构型模式之桥接模式

文章目录 概述原理结构图代码示例 小结 概述 桥接模式(bridge pattern) 的定义是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转…

使用位掩码的权限设计

使用位掩码的权限设计 权限系统的设计几乎是每个系统都必需的模块。 下面就聊一聊基本设计的思路。 位掩码(BitMask),是位(Bit)和掩码(Mask)的组合词。 “位”指代着二进制数据当中的二进制位…

基于深度学习OCR文本识别系统源码(带界面)

第一步:概要 基于深度学习OCR文本识别分为两个模块:DBNet和CRNN。 DBNet是基于分割的文本检测算法,算法将可微分二值化模块(Differentiable Binarization)引入了分割模型,使得模型能够通过自适应的阈值图进行二值化,并…

Postgresql 基础学习

一、介绍 PostgreSQL是一个开源的关系型数据库管理系统(RDBMS),它支持SQL语言的所有功能,具有可扩展性、高并发性和可靠性等特点。 以下是一些 PostgreSQL 的特点: 开源:PostgreSQL是一个非常受欢迎的开源…

Python-温故知新

1快速打开.ipynb文件 安装好anaconda后,在需要打开notebook的文件夹中, shift键右键——打开powershell窗口——输入jupyter notebook 即可在该文件夹中打开notebook的页面: 2 快速查看函数用法 光标放在函数上——shift键tab 3...

Docker镜像源自动测试镜像速度,并选择速度最快的镜像

国内执行如下代码 bash <(curl -sSL https://gitee.com/xjxjin/scripts/raw/main/check_docker_registry.sh)国外执行如下代码 bash <(curl -sSL https://github.com/xjxjin/scripts/raw/main/check_docker_registry.sh)如果有老铁有比较不错的镜像源&#xff0c;可以提…

探索Python编程乐趣:制作气泡反弹小游戏

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;Python编程的轻松入门 二、游戏实现原理&#xff1a;气泡反弹的逻辑 …

探索生态农业,守护绿色家园

在繁忙的都市生活中&#xff0c;我们往往忽略了与自然和谐相处的重要性。而生态农业&#xff0c;正是让我们重拾与大自然亲密关系的桥梁。通过采用生态友好的耕作方式&#xff0c;生态农业不仅能够提供健康、营养的农产品&#xff0c;还能够保护生态环境&#xff0c;实现人与自…

Android高通 12/13静默安装和卸载

1、静默安装和静默卸载 涉及代码路径感兴趣可以去看下如下所示&#xff0c;这里不作重点赘述哈 Package Manger frameworks/base/services/java/com/android/server/pm/Settings.java frameworks/base/services/java/com/android/server/pm/PackageManagerService.java framew…

CCS基础入门

视频&#xff1a; CCS使用教程_哔哩哔哩_bilibili 创建工程 步骤一&#xff1a;创建 方法一&#xff1a; 方法二&#xff1a; 方法三&#xff1a; 步骤二&#xff1a;选择工程配置 步骤三&#xff1a;完成创建 编译工程&#xff1a; 方法一&#xff08;最常用&#xff09;…

Excel中自动验证URL网址链接有效性

下面表格中的网址有的可以打开&#xff0c;有的不能打开 在Excel中按下 Alt F11 键来打开VBA编辑器&#xff0c;选择 插入 > 模块&#xff0c;创建一个新的模块&#xff0c;在新创建的模块窗口中输入以下代码&#xff1a; Function 测试网址(ByVal URL As String) As Str…

$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams

问题描述 动态添加子view的时候&#xff0c;报crash&#xff0c;提示$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams 完整错误堆栈 :12.946 11951-11951/com.xx E/CrashReport: sys default last handle start! 11-16 12:21:13.041 11951-1195…

笔记-X86下用Docker运行ARM64编译Libreoffice

初衷 针对恶略环境下的自适应&#xff0c;记个笔记&#xff0c;苦于没有外网的arm架构环境&#xff0c;内网中安装个arm类型的deb&#xff0c;难如登天&#xff0c;突然发现这个好东西。 参考引用 x86架构的Ubuntu上通过Docker运行ARM架构的系统 前提 docker已经安装好 安…

UDP协议与TCP协议1.2

UDP UDP数据报UDP报头UDP载荷 UDP的报文格式&#xff1a; 这里的UDP长度&#xff0c;描述了整个UDP数据报&#xff0c;占多少个字节&#xff0c;这里整个UDP长度最多是64kb 在UDP中校验和就是使用CRC的方式来完成的 数据在网络传输中是可能会出现错误的&#xff0c;例如比特翻…

Linux日志定位实战指令总结

一、日志定位的常用Linux指令 步骤&#xff08;一&#xff09;&#xff1a;如果你不知道日志的位置&#xff0c;Linux指令如何查找到日志所在的位置呢&#xff1f; 要快速定位到名为nfm-info.log的文件&#xff0c;你可以使用find命令或locate命令。这两个命令都能够搜索文件…

uniappx 安卓保活(多种技术;UTS版) Ba-KeepAlive-U

简介&#xff08;下载地址&#xff09; Ba-KeepAlive-U 是一款android原生保活插件&#xff0c;UTS版本&#xff08;同时支持uniapp和uniappx&#xff09;&#xff0c;支持市面上大部分机型&#xff0c;Android4.4到Android14&#xff08;**注意&#xff1a;**不保证支持所有机…

MoonBit 周报 Vol.41:替换 Array 实现、键值对增加模式匹配支持

MoonBit更新 【Breaking Change】Array重命名为FixedArray&#xff0c;vec.Vec重命名为Array // Before fn init {let array : vec.Vec[Int] [1, 2, 3] } // After fn main {let array : Array[Int] [1, 2, 3] }【语法】键值对&#xff08;如Map HashMap等&#xff09;增加…

正则表达式(知识总结篇)

本篇文章主要是针对初学者&#xff0c;对正则表达式的理解、作用和应用 正则表达式&#x1f31f; 一、&#x1f349;正则表达式的概述二、&#x1f349;正则表达式的语法和使用三、 &#x1f349;正则表达式的常用操作符四、&#x1f349;re库主要功能函数 一、&#x1f349;正…

远动通讯屏柜的组成及各装置的作用

远动通讯屏柜的组成及各装置的作用 远动通讯屏是基于公共电网安全而投入的远方监控遥控设备&#xff1b;主要由远动装置、通讯管理机、交换机、调制解调器、GPS对时装置、数字通道防雷器、模拟通道防雷器、插线板、空气开关、屏柜及附件等设备组成、标配尺寸2260*800*600&…

C++设计模式---面向对象原则

面向对象设计原则 原则的目的&#xff1a;高内聚&#xff0c;低耦合 1. 单一职责原则 类的职责单一&#xff0c;对外只提供一种功能&#xff0c;而引起类变化的原因都应该只有一个。 2. 开闭原则 对扩展开放&#xff0c;对修改关闭&#xff1b;增加功能是通过增加代码来实现的&…