LeetCode 123题: 买卖股票的最佳时机 III代码优化(原创)

之前完成了LeetCode 123题: 买卖股票的最佳时机 III(原创)-CSDN博客,虽然完成代码编写,并提交成功,但运行效率不是很高。执行时长高达62ms,见下图:

看了下代码感觉可以通过将三维数组dp[n][2][3],改成二维数组dp[n][6]来进行优化,于是按照此思路对代码进行了修改,并且去掉了不必要赋值和计算,代码如下:

public int maxProfit(int[] prices) {int[][]dp = new int[prices.length][4];dp[0][2] = -prices[0];dp[0][3] = -prices[0];for (int i = 1; i < prices.length; ++i) {// 今天手里没有股票且一次交易的最大获利:昨天手里没有股票,且有一次交易和昨天0次交易今天卖掉股票两者最大值dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][2] + prices[i]);// 今天手里没有股票且两次交易的最大获利:昨天手里没有股票且有两次交易,和昨天1次交易今天卖掉股票两者最大值dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][3] + prices[i]);// 今天手里有股票且0次交易的最大获利:昨天手里股票且有1次交易,和昨天1次交易今天买股票两者最大值dp[i][2] = Math.max(dp[i - 1][2], - prices[i]);// 今天手里有股票且1次交易的最大获利:昨天手里有股票且有1次交易,和昨天没有股票且有1次交易然后今天买股票的两者最大值dp[i][3] = Math.max(dp[i - 1][3], dp[i - 1][0] - prices[i]);}return dp[prices.length - 1][1];
}

完成开发并提交之后,速度果然提高了不少:

算法设计还是要不管精进优化,最终尽量获得最优结果!

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

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

相关文章

提交(git-add git-commit git-push)

当修改好一个功能的时候&#xff0c;可以提交到远程仓库&#xff0c;这样就等于更新了一次版本&#xff0c;那么下次改修了文件的话&#xff0c;是跟这个版本做对比的 git status&#xff0c; 查看文件修改情况&#xff0c;git add 假如你只想提交1个文件&#xff0c;那么直接…

IOC、DI<5> Unity、AOP、延迟获取对象、检索容器中注册信息

Unity.InterceptionExtension.ICallHandler实现一个操作日志记录功能 其它跟上一次一样 <?xml version"1.0" encoding"utf-8" ?> <configuration><configSections><section name"unity" type"Microsoft.Practice…

新手入门python该如何开始学习?学习路线是什么呢?

今天这篇文章从三个点给大家介绍一下新手学习Python的正确路线是什么、python最核心的知识点是什么 Python学习路线 Python学习路线可以大致分为以下几个阶段&#xff0c;每个阶段都包含了一系列核心知识点和技能&#xff1a; 第一阶段&#xff1a;Python基础 Python语言基础…

扫描某个网段下存活的IP:fping

前言&#xff1a; 之前用arp统计过某网段下的ip&#xff0c;但是有可能统计不全。网络管理平台又不允许登录。想要知道当前的ip占用情况&#xff0c;可以使用fping fping命令类似于ping&#xff0c;但比ping更强大。与ping需要等待某一主机连接超时或发回反馈信息不同&#x…

递归与迭代

1. 概念区别 递归&#xff08;recursion&#xff09;&#xff1a;递归常被用来描述以自相似方法重复事物的过程&#xff0c;在数学和计算机科学中&#xff0c;指的是在函数定义中使用函数自身的方法。&#xff08;A调用A&#xff09; 迭代&#xff08;iteration&#xff09;&…

nodejs学习之Rollup

官网 https://github.com/rollup/rollup 英文文档 中文文档 是什么 Rollup 是一个用于 JavaScript 的模块打包工具&#xff0c;它将小的代码片段编译成更大、更复杂的代码&#xff0c;例如库或应用程序。它使用 JavaScript 的 ES6 版本中包含的新标准化代码模块格式&#xf…

数据挖掘与分析部分实验内容

一、机器学习算法的应用 1. 朴素贝叶斯分类器 相关代码 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB, MultinomialNB from sklearn.metrics import accuracy_score # 将数据加载到DataFrame中&a…

基于声学基元的高质量空间音频生成框架

关键词&#xff1a;人体姿态、声学基元、空间音频建模、体积渲染 过去几年中&#xff0c;渲染和动画制作逼真的3D人体模型技术已经发展成熟&#xff0c;并且达到了令人印象深刻的质量水平。然而&#xff0c;与这些全身模型相关联的空间音频建模&#xff0c;却在很大程度上被忽视…

【C++报错已解决】“Null Pointer Dereference“

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 在软件开发过程中&#xff0c;遇到 “Null Pointer Dereference” 报错可能会让你感到困惑。这个错误提示通常意味着你的程…

Git分支合并以及分支部分合并 提交记录合并

Git分支合并,以及分支部分合并,提交记录合并 最近工作中用到git分支合并的场景,记录一下. 分支整体合并,合并所有记录 仅合并分支部分代码

《从C/C++到Java入门指南》- 16.多维数组

多维数组 二维数组 打印一下 Java 中的二维数组会发现&#xff0c;打印的是 JVM 中的地址&#xff1a; import java.util.*; public class Main {public static void main(String[] args) {int arr[][] {{1, 2, 3},{4, 5, 6}};int ns[] {3, 4, 1, 3};System.out.println(A…

鸿蒙仓颉语言【互操作InterOp】

interoperate 语言的互操作&#xff0c;是必不可少的核心能力&#xff0c;在不同的操作系统平台上要与不同基础的OS接口api进行交互&#xff0c;以创建更合适的兼容层。 仓颉使用foreign关键字来声明调用的不同操作系统的基础API&#xff0c;声明的同时&#xff0c;明确数据类…

leetcode hot100 (面试复习用)

数组 最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 示例&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4]输出&#xff1a;6解释&#xff1…

【Qt】按钮的属性相关API

目录 一. QPushButton 二. QRadioButton 按钮组 三. QCheckBox Qt中按钮的继承体系如下图 QAbstractButton是一个抽象类&#xff0c;集成了按钮的核心属性和API 按钮说明QPushButton&#xff08;普通按钮&#xff09;最常见的按钮&#xff0c;用于触发操作或者事件。可以设…

习题2.21

(defn rever [a](defn item[l r](if ( nil (first l)) r(item (rest l) (cons (first l) r))))(item a nil)) 这段代码非常有助于理解什么是深度优先&#xff0c;什么是广度优先。 很久没有写习题的代码了&#xff0c;倒不是懒得做习题了&#xff0c;是私事多&#xff0c;状态…

【系统架构设计】数据库系统(三)

数据库系统&#xff08;三&#xff09; 数据库模式与范式数据库设计备份与恢复分布式数据库系统分布式数据库的概念特点分类目标 分布式数据库的架构分布式数据库系统与并行数据库系统 数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库设计 备份与恢复 分布式数据库系统…

macbook pro大模型推理

安装与配置 参考github ollama 链接安装ollama。安装完成后,安装常用的模型,下载速度超快。 性能测试 在进行实际测试之前,我首先对模型进行了预处理,以确保其在 M3 Max 上能够高效运行。测试过程中,我主要关注了以下几个方面: 模型加载时间 加载大型模型通常需要较…

粘弹性和机械塑性等力学行为如何影响细胞行为?

组织和细胞外基质&#xff08;ECM&#xff09;是细胞生存和功能的关键组成部分&#xff0c;它们不仅提供细胞生长和迁移的结构支撑&#xff0c;还通过其力学特性影响着细胞的形态、功能和行为。组织和ECM并非简单的材料&#xff0c;它们展现出复杂且多样的力学行为&#xff0c;…

农场驿站平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;农场资讯管理&#xff0c;卖家管理&#xff0c;用户分享管理&#xff0c;分享类型管理&#xff0c;商品信息管理&#xff0c;商品分类管理&#xff0c;系统管理&#xff0c;订单管…

MATLAB学习日志DAY13

13.矩阵索引&#xff08;1&#xff09; 13.1 下标 上图&#xff01; A 的行 i 和列 j 中的元素通过 A(i,j) 表示。 例如&#xff0c;A(4,2) 表示第四行和第二列中的数字。 在幻方矩阵中&#xff0c; A(4,2) 为 15。 A(1,4) A(2,4) A(3,4) A(4,4) 用来计算 A 第四列中的…