代码随想录算法训练营第四十九/五十天 | 动态规划:股票买卖I II III IV

本文探讨了动态规划在股票买卖问题中的应用,从贪心策略到买卖股票I、II、III、IV的不同情况,包括一次交易与多次交易的区别,以及实现过程中的关键点和理解难点。作者分享了对问题的思考和代码实现的感悟,以及对‘笔误’正确性的意外发现。
摘要由CSDN通过智能技术生成

动态规划:股票买卖I II III IV

题目

121. 买卖股票的最佳时机
122.买卖股票的最佳时机II
123.买卖股票的最佳时机III
188.买卖股票的最佳时机IV

对题目的想法

  • 买卖股票I一开始是用类似贪心的解法做的,虽然实际实现过程和随想录的贪心解法好像不太一样。其实有点没明白随想录的贪心解法。
  • 买卖股票II发现贪心的思路好像不能用了,这时去看了题解。

实现中/后的感想

  • 买卖股票I II的最大区别是一个只能交易一次,而另外一个能交易无限次。具体在代码上的插别十分小:
    无限次交易:dp[i][1] = Math.max(dp[i - 1][0] - prices[i], dp[i - 1][1]);
    只有一次交易:dp[i][1] = Math.max(0 - prices[i], dp[i - 1][1]);
  • 买卖股票III IV竟然都是一次过,非常满足。自己模仿买卖股票II写了类似的思路,定义了四种状态,其实并不太自信,没想到通过了。
  • 自己第一次尝试其实有个笔误,然后看题解的时候发现这种“笔误”似乎也是正确的

大家会发现dp[2]利用的是当天的dp[1]。 但结果也是对的。

但实际上这种解法没有看懂,决定不尝试理解这种思路了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值