Advertisement

买卖股票的最佳时机(可多次买卖,含交易手续费)

阅读量:
复制代码
    class Solution {
    public int maxProfit(int[] prices, int fee) {
       if(prices==null||prices.length==0){
           return 0;
       }
    int[] buy=new int [prices.length];
    int[] sell=new int[prices.length];
    buy[0]=-prices[0];
    sell[0]=0;
    for(int i=1;i<prices.length;i++){
    buy[i]=Math.max(sell[i-1]-prices[i],buy[i-1]);
    sell[i]=Math.max(sell[i-1],buy[i-1]+prices[i]-fee);
    }
    return sell[prices.length-1];
    }
    }

手中有票2种情况,

  1. 未售出商品 yesterday, 今天无法进行交易, 收支情况与昨天一致;
  2. 昨天已售出商品, 今天重新买入, 收益等于昨日卖出所得减去今日买入支出

手中无票的有两种情况:
昨天有票、今天卖出后:
收入与支出 = 昨天有票时的收益 + 今日卖出赚取的资金 - 手续费;
如果昨天就没有票、今天也没有,则收入与支出即为yesterday的。

全部评论 (0)

还没有任何评论哟~