LeetCode 714. Best Time to Buy and Sell Stock with Transaction Fee

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/smmyy022/article/details/83178525

题解类型

这里有一篇极尽完美的足以秒杀所有 stock buy&sell 类型的题解,写的非常完善。
给出我觉得重要的点:

T[ i, k, b ] 表示到i位为止交易k次情况下 是否(b=0 or 1)持有股票时获得最大收益

  1. 边界条件
T[-1][k][0] = 0, T[-1][k][1] = -Infinity
T[i][0][0] = 0, T[i][0][1] = -Infinity
  1. 迭代式
// 卖出 or keep
T[i][k][0] = max(T[i-1][k][0], T[i-1][k][1] + prices[i])
// 买入 or keep。 特别记 买入消耗一次交易次数
T[i][k][1] = max(T[i-1][k][1], T[i-1][k-1][0] - prices[i])// here k-1

Code

int maxProfit(vector<int>& prices, int fee) {
        int t_i0,t_i1;
        t_i0=0;
        t_i1=-99999;
        for(int p:prices){
            int old_ti0 = t_i0;
            t_i0=max(t_i0,t_i1+p-fee);
            t_i1=max(t_i1,old_ti0-p);
        }
        return t_i0;
    }

猜你喜欢

转载自blog.csdn.net/smmyy022/article/details/83178525