买卖股票的最佳时机(可多次买卖,含交易手续费)
发布时间
阅读量:
阅读量
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种情况,
- 未售出商品 yesterday, 今天无法进行交易, 收支情况与昨天一致;
- 昨天已售出商品, 今天重新买入, 收益等于昨日卖出所得减去今日买入支出
手中无票的有两种情况:
昨天有票、今天卖出后:
收入与支出 = 昨天有票时的收益 + 今日卖出赚取的资金 - 手续费;
如果昨天就没有票、今天也没有,则收入与支出即为yesterday的。
全部评论 (0)
还没有任何评论哟~
