买股票的最佳时机(动态规划python实现)

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。

注意你不能在买入股票前卖出股票。

示例 1:

输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 示例 2:

输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

分析

这是一道动态规划题:

递推方程可用下面的方式表示:

前i天的最大收益 = max(前i-1天的最大收益,第i天的价格-前i-1天中的最小价格)

dp[i] 表示 如果第i天抛出股票, 所得到的最大收益,那么递推方程可以表示为:

dp[i] = max(dp[i-1],prices[i] - min(prices[0:i]))

此时提交的话,会超时,原因在于没使用递推方程一次,就调用一次min(prices[0:i],这将耗费大量的时间,我们可以做这样的调整,每次都用temp保存前i-2天中的最小价格,然后每次只需要用temp和prices[i]进行比较即可得到前i-1天中的最小价格,这样就可以通过了

解答

class Solution:

def maxProfit(self, prices):

dp = [0]

if not bool(prices):

return 0

else:

temp = prices[0]

for i in range(1,len(prices)):

temp = min(temp,prices[i])

dp.append(max(dp[i-1],prices[i] - temp))

return max(dp)

公众号

python购买股票_动态规划python实现-买股票的最佳时机相关推荐

  1. python购买股票_十分钟学会用Python交易股票

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本文通过讲述 [单股票均线策略] 在 Ricequant 量化平台的实现,熟悉平台并快速入门.创建自己的量化策略代码 .难易度:入门级.从一下几点说起: ...

  2. 如何用python选股票_用Python选一个自己的股票池1

    用Python选一个自己的股票池1 来源:https://blog.51cto.com/youerning/2498036 人的精力是有限的,所以将目光聚焦在更小的范围内,也许能够得到性价比最高的效果 ...

  3. python导入股票_利用Python将股票代码表导入表格

    做交易必须做好交易记录,这样方便回顾和总结.对于大部分人来说,Excel是大部分人做电子记录的最佳工具. 这几天在翻看<走进我的交易室>这本书,按照书上参考自己弄了一个表格. 每次输入代码 ...

  4. python买卖股票_用Python买卖股票III的最佳时间

    假设我们有一个数组,第i个元素代表第i天给定股票的价格.我们必须设计一种算法来找到最大的利润.我们最多可以完成两笔交易.因此,如果给定价格为[3,3,5,0,1,3,1,4],则结果将为6,因为我们将 ...

  5. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  6. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  7. 用python读取股票价格_使用Python写一个量化股票提醒系统

    大家在没有阅读本文之前先看下python的基本概念, Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开 ...

  8. 我用python做股票_十分钟学会用Python交易股票

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本文通过讲述 [单股票均线策略] 在 Ricequant 量化平台的实现,熟悉平台并快速入门.创建自己的量化策略代码 .难易度:入门级.从一下几点说起: ...

  9. 用python读取股票价格_借助Python获取股票实时价格的操作方法

    今天和大家分享一下使用Python获取股票实时价格的操作方法. 工具/原料 Python软件 可以联网的电脑 方法/步骤 1 要想获取股票数据,我们需要借助第三方模块.我们首先需要打开开始菜单. 2 ...

最新文章

  1. python request file upload_Python基于requests实现模拟上传文件
  2. 西南科技大学 计算机组成原理2011-2012,西南科技大学计算机组成原理2010-2011试卷A卷参考答案(2011)...
  3. 深入学习Redis高可用架构:哨兵原理及实践
  4. SpringBoot集成jsp(附源码)+遇到的坑
  5. Kubernetes入门——Kubernetes工作原理及使用
  6. three.js和php,前端图形学(二十二)一切绕过原生WebGl直接上ThreeJs的都是耍流氓
  7. no value specified for java.sql.date,求助No value specified for parameter 2
  8. 《Android深度探索》第一章心得体会
  9. 转g代码教程_图深度学习入门教程(九)——图滤波神经网络模型
  10. 【图像隐写】基于matlab GUI DCT变换图像隐写【含Matlab源码 1380期】
  11. Windows自带集成工具对ISO镜像是否源于官方网站的验证
  12. echarts 生成 迁徙图_Echarts地图的迁徙图
  13. 机器学习:训练集和测试集
  14. java 向量 内积_向量内积(点乘)和外积(叉乘)概念及几何意义
  15. CentOS 根目录下目录介绍
  16. 烧牛肉,烧肥肠,泡椒兔,炸胡豆炸豌豆?做法指南
  17. PCIe Receiver内部恢复时钟与本地时钟
  18. 晨曦 - 江湖一剑客
  19. JAVA实验七 图形用户界面的设计与实现
  20. VS Code 所选驱动器或UNC共享不存在或不可访问。请另外选择

热门文章

  1. 哈佛大学图书馆二十条训言_ywyuan_新浪博客
  2. STM32通过Fatfs创建PDF文件
  3. 前置器330180-90-00本特利
  4. 机器学习-工作流程与模型优化
  5. Live2D的基础使用
  6. cad图形展示 html5,web html页面显示autocad等dwg格式图形文件方法
  7. 前 15 个 JavaScript 机器学习库
  8. React学习[一]
  9. 考研失败,真的不甘心
  10. 微信登陆php后台,关于微信的登录以及PHP后台的实现