714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode)

一、题目

给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。

你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。

返回获得利润的最大值。

注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。

示例 1:
输入:prices = [1, 3, 2, 8, 4, 9], fee = 2
输出:8
解释:能够达到的最大利润:  
在此处买入 prices[0] = 1
在此处卖出 prices[3] = 8
在此处买入 prices[4] = 4
在此处卖出 prices[5] = 9
总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8

示例 2:
输入:prices = [1,3,7,5,10,3], fee = 3
输出:6

提示:

  • 1 <= prices.length <= 5 * 104
  • 1 <= prices[i] < 5 * 104
  • 0 <= fee < 5 * 104

二、代码

class Solution {public int maxProfit(int[] prices, int fee) {// 如果数量小于2,最大收益就是0if (prices == null || prices.length < 2) {return 0;}int n = prices.length;// bestBuy:表示0~i范围上做无限制次数的交易,并且保证最后一次操作一定是买,考虑上每次交易要交手续费的情况下,最大的收益// 先给初始化i=0时,bestBuy的值,记得要减去手续费int bestBuy = 0 - prices[0] - fee;// bestSell:表示0~i范围上做无限制次数的交易,并且保证最后一次操作一定是卖,这里就不用考虑手续费了,一次交易只需要交一次手续费,我们就默认是在买操作的时候交手续费int bestSell = 0;// 开始向后推for (int i = 1; i < n; i++) {// 两种情况,一种是i位置不参与交易,一种是i位置就是最后一次买操作,这两种情况取最大值bestBuy = Math.max(bestBuy, bestSell - prices[i] - fee);// 两种情况,一种是i位置不参与交易,一种是i位置就是最后一次卖操作,这两种情况取最大值bestSell = Math.max(bestSell, bestBuy + prices[i]);}// 取最后一次是卖操作的最大收益return bestSell;}
}

三、解题思路

这个题整体的思路还是沿用【最佳买卖股票时机含冷冻期】这道题,设立两个辅助数组buy和sell,用buy和sell相互推,并且不再需要冷却过程了,直接在买操作的时候再减一个手续费即可。

【LeetCode】买卖股票的最佳时机含手续费 [M](动态规划)相关推荐

  1. 【LeetCode】714. 买卖股票的最佳时机含手续费 【动态规划】

    题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 题目描述 给定一 ...

  2. leetcode714. 买卖股票的最佳时机含手续费(动态规划)

    给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付手续费.如果你已经购买了一个 ...

  3. 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树

    LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...

  4. 模拟卷Leetcode【普通】714. 买卖股票的最佳时机含手续费

    714. 买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都 ...

  5. 【贪心算法】Leetcode 714. 买卖股票的最佳时机含手续费

    [贪心算法]Leetcode 714. 买卖股票的最佳时机含手续费 题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. ...

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

    714. 买卖股票的最佳时机含手续费 题目 思路 过一遍,记录第i天是否买入和卖出的最值. 代码 class Solution {public:int maxProfit(vector<int& ...

  7. Leetcode刷题笔记 714. 买卖股票的最佳时机含手续费

    714. 买卖股票的最佳时机含手续费 时间:2020年12月17日 知识点:动态规划 题目链接:https://leetcode-cn.com/problems/best-time-to-buy-an ...

  8. 【LeetCode每日一题】——714.买卖股票的最佳时机含手续费

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...

  9. leetcode 714 买卖股票的最佳时机含手续费-动态规划(中等)

    714 买卖股票的最佳时机含手续费-动态规划(中等) 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交 ...

最新文章

  1. ACMNO.16用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数 输入 X 输出 X的
  2. jdk安装失败_jenkins全局工具jdk、maven安装
  3. python错误代码40035_Python 创建XML
  4. DCMTK:测试dcmiod的颜色转换功能
  5. oracle裁员原因_Oracle大幅度裁员意味着什么?
  6. 运动检测(前景检测)之(一)ViBe
  7. python中isinstance是什么意思_isinstance在python中的意思是什么?
  8. linux vim编辑
  9. c语言字符数组的应用编程,C语言基础(一)
  10. DPCM差分预测编码
  11. 纳米机器人最新研究进展(2021年)
  12. 腾讯求职经历(后附大量面试题)
  13. 自然语言处理工具之 HanLP 鸟瞰
  14. Stripe 自动分账
  15. Error loading property file
  16. 关于微软无线鼠标适配的问题
  17. 26.gateway的IP 认证拦截,gateway做token验证 流程图(springcloud)
  18. 探讨Linux CPU的上下文切换原由
  19. 玩转Python脚本开发-01
  20. Backdoor.Trojan专杀工具

热门文章

  1. 帮忙写一篇关于消防化工指挥作战系统的设计报告
  2. nodejs图片处理(上传图片,复制图片,移动图片)
  3. 2020找工作更难了?做好这4方面,找到高薪好工作
  4. 2022年乡村医生考试精选模拟题及答案
  5. 视频帧凸包检测 结果存入数据库
  6. swagger换新UI
  7. 如何在FreePBX ISO 中文版本安装讯时网关,潮流16FXS 网关和潮流话机
  8. android 指纹框架,Android标准化指纹识别框架(只基于api23官方标准)
  9. 四十七、Fluent近壁面处理
  10. 问题:C-Kermitc Sorry, you must SET LINE or SET HOST first