leetcode-714. 买卖股票的最佳时机含手续费

在这里插入图片描述

我之前做过好像类似的,我第一想法就是用到了散点。其实和之前的122几乎差不多但是增加手续费的操作。很多人都去使用dp去做。但是好像直接可以去使用贪心去做。

就是一个贪婪的过程。每一步去的最好的。这个我用题目给的数据去进行解释:
1 3 2 8 4 7
每一次的费用2元

在1买上来,我们可以在3去卖掉,但是此时费力不讨好。我们可以不去选择。现在再去王后面去转,发现8可以去卖掉。此时再去收取4,在7的时候去卖掉。

我们去实行的策略如下:最低价买入,最高价卖出,但是如果此时(收入-fee)<=0,那么完全不需要卖出,那么没有收入不盈不亏都是没必要,因为吃力不讨好。

代码如下:

class Solution {
public:
    int ans=0;
    int maxProfit(vector<int>& prices, int fee) {
        if(prices.size()<2) return 0;
        int hands=prices[0];
        for(int i=1;i<prices.size();i++){
            //如果当前手里的钱都小于后面的钱了
            if(hands>prices[i]) hands=prices[i];
            else if(hands+fee<prices[i]){
                ans+=((prices[i]-hands)-fee);
                hands=prices[i]-fee;
            }
        }
        return ans;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值