买卖股票问题的总结

首先我们的思想应该是这样的:对于买卖股票获得的最大金额,要么是延续前一天状态,要么是前一天的钱减去当天的钱或者加上当天的钱。

都一样的部分是dp数组的含义:它表示第i天的最大金额。其中因为是二维数组,那么可以用0来表示持有不持有股票的最大金额。用1来表示持有股票的最大金额

买卖股票总共有这么几种情况:

  1. 股票只能买卖一次:

//针对股票问题只能买卖一次,我们要知道的是,它一开始所持有的股票的钱是多少?答案是-prices[0]
//因为只能买卖一次,所以我不管是之前没买然后过几天才买,还是一开始就买股票我的钱都是-prices[0]
 int[][] dp = new int[len][2];
        dp[0][0] = 0;//不持有股票的最大金钱
        dp[0][1] = -prices[0];//持有股票的最大金钱

        for(int i =1 ;i<len;i++){
            dp[i][0] = Math.max(dp[i-1][1]+prices[i],dp[i-1][0]);
            dp[i][1] = Math.max(dp[i-1][1],-prices[i]);
        }
    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值