day51 --动态规划10

  •  121. 买卖股票的最佳时机 
  •  122.买卖股票的最佳时机II 

第一题:买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

  • 示例 1:

  • 输入:[7,1,5,3,6,4]

  • 输出:5

0、贪心的算法思路是求得局部最优,然后求得全局最优,

1、动态规划的思路是用一个二维dp数组,一维dp[i][0]表示第i天持有股票所得最多现金

另一维dp[i][1]表示第i天不持有股票所得最多现金。

(1)确定dp数组及其下标含义

dp[i][0]:  表示第i天持有股票所得最多现金,可正可负

dp[i][1]:  表示第i天不持有股票所得最多现金

(2)确定递推公式

首先dp[i][0]可以由两个状态求出来

要么是今天没买,保持昨天的状态,也就是dp[i-1][0]

要么是今天买了,所得现金就是买入今天股票后所得现金即:-prices[i]

所以dp[i][0]=max(dp[i-1][0],-prices[i]);

对于dp[i][1]也可以由两个状态求出来

要么是前一天就卖出去了,今天就维持现状,所持现金就没变:dp[i-1][1]

要么是今天正好卖出,所得现金就是今天的价格卖出的所得现金:prices[i]+dp[i-1][0]

同样dp[i][1]取最大的,dp[i][1]=max(dp[i-1][1],prices[i]+dp[i-1][0]);

(3)dp数组如何初始化

根据递推公式,两者都是从dp[0][0]和dp[0][1]开始推导出来,所以,dp[0][0]-=prices[0]

表示第0天不持有股票,所以现金是0,dp[0][1]=0;

(4)确定遍历顺序

dp[i]都是由dp[i-1]推出来的,所以一定是从前向后遍历

(5)举例推导数组

根据prices=[7,1,5,3,6,4]可得

dp[0][0]=-7; dp[0][1]=0

dp[1][0]=-1; dp[1][1]=max(0,-6)=0

dp[2][0]=-1; dp[2][1]=max(0,4)=4

dp[3][0]=-1; dp[3][1]=max(4,2)=4

dp[4][0]=-1; dp[4][1]=max(4,5)=5

dp[5][0]=-1; dp[5][1]=max(5,3)=5

本题有多种方法可解决,动态规划比较难构思,第二题不做学习

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

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

相关文章

员工福利平台设计方案

需求背景: 1、杭州行政希望给员工有一个福利平台,可以通过该福利平台,一方面可以结合公司周围的实体店,给到员工一些福利的商品,员工可以自行去这些商家进行消费。 2、公司可以通过福利平台,给员工账户进…

K8s 部署 CNI 网络组件+k8s 多master集群部署+负载均衡

------------------------------ 部署 CNI 网络组件 ------------------------------ ---------- 部署 flannel ---------- K8S 中 Pod 网络通信: ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一…

实验六:DHCP、DNS、Apache、FTP服务器的安装和配置

1. (其它) 掌握Linux下DHCP、DNS、Apache、FTP服务器的安装和配置,在Linux服务器上部署JavaWeb应用 完成单元八的实训内容。 1、安装 JDK 2、安装 MySQL 3、部署JavaWeb应用 安装jdk 教程连接:linux安装jdk8详细步骤-CSDN博客 Jdk来源:linu…

【Django 05】Django-DRF(ModelViewSet)、路由组件、自定义函数

1. Django-DRF(ModelViewSet) 1.1 DRF是什么? ModelViewSet 是 Django REST framework 提供的一个视图集类,它封装了常见的模型操作方法。 模型类提供了默认的增删改查功能。 它继承自 GenericViewSet、ListModelMixin、Retri…

基于pyenv和virtualenv搭建python多版本虚拟环境

pyenv简介 由于Python的依赖是基于site的,这对于生产环境来说,是一种简单而正确的方式,然而,对于我们的开发环境,基于这样的管理方式,带来了可怕的第三方依赖管理的难题,virtualenv适时出现了&a…

Altium Designer布局技巧

资料 快捷键 PCB导入原理图 验证工程 导入原理图 进入PCB编辑界面,设计→Import Changes from xxxx 多原理图多PCB 创建多个原理图、PCB 略反键点击原理图 勾选高级 选择原理图及目标PCB,点击确定 右键点击列表项,更新原理图&#xff0…

手机桌面待办事项APP推荐

每天,我们每个人都面临着繁琐的事务和任务,而手机成了我们日常生活中不可或缺的伙伴。手机上的待办事项工具像一个可靠的助手,可以帮助我们更好地记录、管理和完成任务。在手机桌面上使用的待办事项APP推荐用哪一个呢? 手机是我们…

服务容错框架Sentinel入门

概述 Sentinel,阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。分布式系统的流量防卫兵。 特征: 丰富的应用场景:秒杀(即突发流量控制在系统…

更加轻松处理相同文件名!覆盖复制操作全新升级,避免重复命名!

亲爱的用户,您是否在进行覆盖复制操作时,常常因为相同的文件名而无法正常完成任务?现在,我们为您推出了全新的覆盖复制升级版,让您更加轻松处理相同文件名,避免重复命名的尴尬局面! 首先第一步…

el-date-picker如何回显

后端传输过来起止时间,需要回显在 el-date-picker中 未修改前的代码: 问题整改:需要将时间转换为Date类型 修改后的代码 setTime(date){if (date!null){this.value.push(new Date(date.startTime))this.value.push(new Date(date.endTime))c…

C++智能指针[下](shared_ptr/weak_ptr/循环引用/删除器)

文章目录 4.智能指针[shared_ptr]4.1设计理念成员属性 4.2主要接口拷贝构造 4.3引用计数线程安全问题测试线程安全通过对计数引用的加锁保护使得类线程安全类实例化的对象使用时需要手动加锁保护 "锁"的引进线程引用传参问题 4.4整体代码 5.循环引用问题5.1问题的引入…

项目管理中,如何建立里程碑式管理?

项目进度控制是项目管理中的重要环节,也是最具挑战性的工作之一。在项目管理中,项目进度失控受到多种因素的影响,导致项目失控。 为了解决这个问题,我们可以借鉴在旅途中学到的经验,通过设立里程碑来了解项目进度&am…

MSQL系列(九) Mysql实战-Join算法底层原理

Mysql实战-Join算法底层原理 前面我们讲解了BTree的索引结构,及Mysql的存储引擎MyISAM和InnoDB,今天我们来详细讲解下Mysql的查询连接Join的算法原理 文章目录 Mysql实战-Join算法底层原理1.Simple Nested-Loop Join 简单嵌套循环2.Block Nested-Loop Join 块嵌套…

CDN技术(1)

1. CDN简介 CDN 是构建在数据网络上的一种分布式的内容分发网。 CDN 的作用是采用流媒体服务器集群技术,克服单机系统输出带宽及并发能力不足的缺点,可极大提升系统支持的并发流数目,减少或避免单点失效带来的不良影响。 2. CDN作用 CDN 利…

list列表前端分页功能已经提交list时容易犯错的问题回顾

最近在开发中,有返回list需要前端分页的,而且后续还需提交整个list,虽说前端分页并不难,但还有会有一些问题: 从图片代码就可以很清晰的看到前端分页,如何点击页数翻页的,很简单,但…

2024通信保研-电磁场电磁波复习

标量场的梯度的旋度恒等于0,旋度的散度等于0。 旋度: rot ⁡ F ( e x ∂ ∂ x e y ∂ ∂ y e z ∂ ∂ z ) ( e x F x e y F y e z F z ) e x ( ∂ F z ∂ y − ∂ F y ∂ z ) e y ( ∂ F x ∂ z − ∂ F z ∂ x ) e x ( ∂ F y ∂ x − ∂ F x …

MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)

目标检测模型性能衡量指标、MS COCO 数据集的评价标准以及不同指标的选择推荐 0. 引言 0.1 COCO 数据集评价指标 目标检测模型通过 pycocotools 在验证集上会得到 COCO 的评价列表,具体参数的含义是什么呢? 0.2 目标检测领域常用的公开数据集 PASCAL …

网络基础知识

1.什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2.OSI 参考模型的层次是什么? 有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和…

04 文件管理

文件管理 文件和目录的创建 删除文件和目录 文件查找命令 文件的拷贝和移动 打包和压缩

Macos文件图像比较工具:Kaleidoscope for Mac

Kaleidoscope是一款文件图像比较工具,它可以方便地比较两个文本或者图片文件的差异。这个工具可以在Mac系统上使用,并且支持多种文件格式,包括文本文件、图片文件、PDF文件等等。 Kaleidoscope有一个直观的用户界面,可以让用户轻…