力扣记录:贪心算法2中等(2)股票问题——122 买卖股票的最佳时机II,714 买卖股票的最佳时机含手续费

本次题目

  • 122 买卖股票的最佳时机II
  • 714 买卖股票的最佳时机含手续费

122 买卖股票的最佳时机II

  • 局部最优:将利润分解为每天计算(当天价格减去前一天价格),收集所有的正利润。可动态规划。
class Solution {
    public int maxProfit(int[] prices) {
        //将利润分解为每天计算(当天价格减去前一天价格)
        int profits = 0;
        for(int i = 1; i < prices.length; i++){
            //收集所有的正利润
            if(prices[i] - prices[i - 1] > 0) profits += prices[i] - prices[i - 1];
        }
        //返回结果
        return profits;
    }
}

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

  • 同上122 买卖股票的最佳时机II,但是每次买卖需要手续费,局部最优:最低值买入,最高值卖出(去掉手续费还有利润)。买入时选择最低点,卖出时选择连续利润区间中的最后一天。
  • 注意:选择连续利润区间的最后一天可以在当天价格有利润时将最小价格记录为当前价格减去手续费,后续计算不会重复减手续费。可动态规划。
class Solution {
    public int maxProfit(int[] prices, int fee) {
        //买入时选择最低点,卖出时选择连续利润区间中的最后一天
        int minprice = prices[0];
        int profits = 0;
        for(int price : prices){
            //最低值买入
            if(price < minprice) minprice = price;
            //最高值卖出(去掉手续费还有利润)
            if(price > minprice + fee){
                profits += price - minprice - fee;
                //在当天价格有利润时将最小价格记录为当前价格减去手续费
                //后续计算不会重复减手续费
                minprice = price - fee;
            }
        }
        //返回结果
        return profits;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值