步骤一、确定状态:

确定dp数组及下标含义 dp[i]是一个长度为len(prices)的一维数组,表示的是在第i天持有股票

步骤二、推断状态方程:

第i天持有股票,即dp[i][1], 那么两个状态:

1、第i-1天就持有股票, 保持现状过来的, 最大利润就是昨天持有股票的最 大利润dp[i-1][1]

2、第i-1天没有股票,第i天刚买进来的, 那这时候的最大利润就是dp[i- 1][0]-prices[i],注意这个不是仅仅的-prices[i]了, 因为此时可以进行多次 交易了, 即使第i-1没有股票,那么也可能会有更前面的利润传过来,dp[i][1] 选择最大的: dp[i][1]=max(dp[i-1][1], dp[i-1][0]-prices[i])

步骤四、计算顺序:

从左往右, 从1开始遍历,返回的是最后没有股票时候的最大利润, 也就是dp[-1][0]

class Solution:def maxProfit(self, prices: List[int]) -> int:# 异常值判断if len(prices) < 2:return 0# dp数组定义dp = [[0,0] for _ in range(len(prices))]# dp初始化dp[0][0] = 0dp[0][1] = -prices[0]for i in range(1, len(prices)):dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i]) # 第i天不持有股票dp[i][1] = max(dp[i-1][1], dp[i-1][0]-prices[i]) # 第i天持有股票return dp[-1][0]

106. Leetcode 122. 买卖股票的最佳时机 II (动态规划-股票交易)相关推荐

  1. leetcode 122. 买卖股票的最佳时机 II 思考分析

    目录 题目 贪心法 题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时 ...

  2. Leetcode 122.买卖股票的最佳时机II

    Time: 20190904 Type: Easy 考察:动态规划 题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完 ...

  3. Leetcode 122.买卖股票的最佳时机 II (每日一题 20210618)

    给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票).注意:你不能同时参与多 ...

  4. leetcode 122. 买卖股票的最佳时机 II(贪心算法)

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...

  5. LeetCode 122 买卖股票的最佳时机 II

    题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一 支股票).注意:你不能同时参与多笔交易(你必 ...

  6. leetcode 122. 买卖股票的最佳时机 II

    难度:中等 频次:35 题目: 给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格. 在每一天,你可能会决定购买和/或出售股票.你在任何时候 最多 只能持有 一股 股票. ...

  7. leetcode 122 买卖股票的最佳时机II

    贪心算法:如果今天买明天能够盈利,那就今天买入明天卖出:对于这个问题来讲是具有最优子结构性质的 分情况: 1)当len<1:不会赚钱,return 0: 2) class Solution { ...

  8. Leetcode 122. 买卖股票的最佳时机 II 解题思路及C++实现

    解题思路: 采用贪心策略,只要后一天的价格高于前一天,就将差价加进来.得到的结果就是能获取的最大利润. class Solution { public:int maxProfit(vector< ...

  9. 159. Leetcode 122. 买卖股票的最佳时机 II (贪心算法-股票题目)

    class Solution:def maxProfit(self, prices: List[int]) -> int:result = 0for i in range(1,len(price ...

最新文章

  1. maven项目添加文件夹报错
  2. C语言中 怎样区分八进制 十进制 二进制?
  3. python游戏-练习项目19:使用python制作游戏(上)
  4. 并行、并发,两者的区别
  5. rest_framework中的url注册器,分页器,响应器
  6. 面试之什么是java虚拟机
  7. 电脑上mysql数据库无法登录_无法远程登入MySQL数据库的几种解决办法MySQL综合 -电脑资料...
  8. 华为 5G 遭受致命一击!
  9. linux内核中断向量表,Linux内核中断之中断向量表IDT的初始化
  10. lnmp mysql 哪个好_[LNMP]Mysql生产环境配置
  11. 史上最强三千六百道脑筋急转弯
  12. C语言运算符和表达式
  13. 常见的非线性回归模型
  14. MySQL8.0学习笔记(8)—— stored procedures,function
  15. redis主从配置及主从切换
  16. IBTrACS Technical Documentation
  17. 判断单链表是否有环以及环的连接点
  18. python中数字类型以及进制转换
  19. 手机怎么解决同ip多账号_问道手游:2019搬砖技巧分享,多开养号才是王道,三天肝出月卡...
  20. 类各种成员的访问权限 及 友员类和友员函数

热门文章

  1. 写给MongoDB开发者的50条建议Tip6
  2. Python: 绝对导入 Absolute Imports
  3. CloudStack部署运维手册V2 --- 新鲜出炉
  4. WCF Membership Provider
  5. IDEA中Maven项目创建单元测试(JUnit4)
  6. SpringBoot连接Mysql数据库遇到Unable to load authentication plugin ‘caching_sha2_password解决方案
  7. C++vector容器学习
  8. linux安装mysql5.7.18_Linux 安装MySQL5.7.18
  9. python能谢什么_python可以写什么啊
  10. 图像重建算法_降噪重建技术路在何方?