首页 > 其他分享 >【DP】买卖股票的最佳时机III

【DP】买卖股票的最佳时机III

时间:2024-05-01 16:56:28浏览次数:26  
标签:状态 股票 sell1 最佳时机 buy1 prices III DP

题源
-之前都是数组存,然后转移状态,这次是直接四个变量,非常神奇

-在该问题中,定义了五种状态,分别是:未进行过任何操作、只进行过一次买操作、进行了一次买操作和一次卖操作(完成了一笔交易)、在完成了一笔交易的前提下进行了第二次买操作以及完成了全部两笔交易。

-然后,通过状态转移方程计算第i天结束后这五个状态的最大利润。对于每种状态,给出了相应的转移方程,例如对于buy1状态,它可以保持不变或者在未进行任何操作的前提下以prices[i]的价格买入股票。

-此外,还提到了一个边界条件,即无论是否允许在同一天买入并卖出,最终的答案都不会受到影响,因为这一操作带来的收益为零。

比较买卖股票时机II 和这道题在DP上的区别:

  1. 状态定义:

「买卖股票的最佳时机 II」:在这个问题中,可以使用两个状态来定义动态规划,即持有股票的状态和不持有股票的状态。
「买卖股票的最佳时机 III」:这个问题需要考虑更多的情况,因此需要定义五个状态,分别表示未进行操作、只进行过一次买操作、进行了一次买操作和一次卖操作、在完成了一笔交易的前提下进行了第二次买操作,以及完成了全部两笔交易。

  1. 转移方程:

「买卖股票的最佳时机 II」:在这个问题中,持有股票状态的转移方程是根据前一天不持有股票的状态和当天的股票价格计算得到的。不持有股票状态的转移方程是根据前一天持有股票的状态和当天的股票价格计算得到的。
「买卖股票的最佳时机 III」:在这个问题中,每个状态的转移方程涉及其他状态的计算。具体而言,buy1状态的转移方程需要考虑buy1'状态(第i-1天的状态),sell1状态的转移方程需要考虑buy1'和sell1'状态,buy2状态的转移方程需要考虑sell1'状态,sell2状态的转移方程需要考虑buy2'状态。
3. 限制条件:

「买卖股票的最佳时机 II」:在这个问题中,没有交易次数的限制,可以进行尽可能多的交易。
「买卖股票的最佳时机 III」:在这个问题中,最多完成两笔交易,因此需要考虑交易次数的限制。

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        n = len(prices)
        buy1 = buy2 = -prices[0]
        sell1 = sell2 = 0
        for i in range(1, n):
            buy1 = max(buy1, -prices[i])
            sell1 = max(sell1, buy1 + prices[i])
            buy2 = max(buy2, sell1 - prices[i])
            sell2 = max(sell2, buy2 + prices[i])
        return sell2

作者:力扣官方题解
链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/solutions/552695/mai-mai-gu-piao-de-zui-jia-shi-ji-iii-by-wrnt/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:状态,股票,sell1,最佳时机,buy1,prices,III,DP
From: https://www.cnblogs.com/peterzh/p/18169455

相关文章

  • sub-1G低功耗soc芯片DP32RF002
    DP32RF002是深圳市动能世纪科技有限公司研制的基于ARMCortex-M0+内核的超低功耗、高性能的、单片集成(G)FSK/OOK无线收发机的32位SoC芯片。工作于200~960MHz范围内,支持灵活可设的数据包格式,支持自动应答和自动重发功能,支持跳频操作,支持FEC功能,同时内部集成了完整的......
  • 【DP】编辑距离
    https://leetcode.cn/problems/edit-distance/description/?envType=study-plan-v2&envId=top-interview-150非常难的一种考虑方式【转载】dp[i][j]代表将word1的前i个字符转换为word2的前j个字符所需的最少步数。因此,根据题目给出的状态转移方程:当word1[i]==wor......
  • Rockchip RK3399 - DRM eDP调试
    ----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6英寸HDMI接口显示屏u-boot:2023.04linux:6.3----------------------------------......
  • BZOJ5424 烧桥计划(单调队列优化dp)
    传送门(vjudge)解题思路注意到\(a_i\)的范围很小,是1000~2000之间,于是我们可以直观感受到k一定不会特别大,推一下可以得出k最多大概在四五百左右,于是可以直接考虑dp[i][j]为前i个数里面选了j个分割点,且第i个数是分割点的最小代价。转移要分两种情况讨论:sum[pre+1~i......
  • oracle数据导入导出,备份还原命令expdp&impdp(只导出元数据,不导出表数据,最全,最完善的步
    感谢金龙鱼先生分享,原文来自https://blog.csdn.net/kou869929526/article/details/125791113一,编码要求以及数据库版本要求检查数据库版本(用于决定导出时生成为哪个版本的dmp头文件)selectversionfromv$instance;检查字符集是否一致(字符集不一致,不能导入)selectuserenv(......
  • Surface Pro 4 miniDP转接HDMI 4K显示的问题
    1、我在某东上买了一个支持4k的minidp转hdmi的转接头,可以支持2K显示器。不过直接连接的话2K显示器最高只能设置1080P的分辨率。解决方法:可以先单独让2k显示器显示,设置分辨率为2k,然后再扩展显示,就可以完美使用了,希望有帮助。2、SurfacePro4及其扩展坞上的MiniDisplayPort能否......
  • hdp2.4 -- hbase集群replication
    liststatuslist_namespace list_peers,list_replicated_tables主节点create'replication_test','f1','f2'1hbase(main):011:0>put'replication_test','rk0001','f1:name','zhanzongxin1'......
  • hdp2.4搭建
    http://192.168.159.11/hbase/虚拟机目录/var/www/html/hbase启动httpd  /bin/systemctlstarthttpd.service  httpd配置文件修改下面三行路径   vi/etc/httpd/conf/httpd.confDocumentRoot"/data/www/html"<Directory"/data/www"><Directory"/d......
  • P5896 [IOI2016] aliens (斜率优化 dp+wqs 二分)
    我们可以把所有点都对称到主对角线下方。然后每个点如果想被覆盖都会有一个最小的三角形,我们可以贪心的只留必须选的点。如果把剩下的点按\(x\)坐标升序排序,可以发现他们的\(y\)坐标也是升序排序的。记剩余点个数为\(n\),显然每个点都选自己的最小三角形最好。但是有可能\(......
  • WordPress操作文章类常用的动作钩子
    publish_post:参数一个($post_ID),点击发布文章时就会被触发;save_post:参数一个($post_ID),发布或更新文章时就会被触发;edit_post:参数两个($post_ID,$post),只要编辑已经存在的文章就会被触发;publish_future_post:参数一个($post_ID),到定时发布文章设定的时间点就会被触发,如果设定的时间早于......