【LeetCode】买卖股票的最佳时机含手续费 [M](动态规划)
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](动态规划)相关推荐
- 【LeetCode】714. 买卖股票的最佳时机含手续费 【动态规划】
题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 题目描述 给定一 ...
- leetcode714. 买卖股票的最佳时机含手续费(动态规划)
给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付手续费.如果你已经购买了一个 ...
- 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树
LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...
- 模拟卷Leetcode【普通】714. 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都 ...
- 【贪心算法】Leetcode 714. 买卖股票的最佳时机含手续费
[贪心算法]Leetcode 714. 买卖股票的最佳时机含手续费 题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. ...
- LeetCode 714 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 题目 思路 过一遍,记录第i天是否买入和卖出的最值. 代码 class Solution {public:int maxProfit(vector<int& ...
- Leetcode刷题笔记 714. 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 时间:2020年12月17日 知识点:动态规划 题目链接:https://leetcode-cn.com/problems/best-time-to-buy-an ...
- 【LeetCode每日一题】——714.买卖股票的最佳时机含手续费
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...
- leetcode 714 买卖股票的最佳时机含手续费-动态规划(中等)
714 买卖股票的最佳时机含手续费-动态规划(中等) 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交 ...
最新文章
- ACMNO.16用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数 输入 X 输出 X的
- jdk安装失败_jenkins全局工具jdk、maven安装
- python错误代码40035_Python 创建XML
- DCMTK:测试dcmiod的颜色转换功能
- oracle裁员原因_Oracle大幅度裁员意味着什么?
- 运动检测(前景检测)之(一)ViBe
- python中isinstance是什么意思_isinstance在python中的意思是什么?
- linux vim编辑
- c语言字符数组的应用编程,C语言基础(一)
- DPCM差分预测编码
- 纳米机器人最新研究进展(2021年)
- 腾讯求职经历(后附大量面试题)
- 自然语言处理工具之 HanLP 鸟瞰
- Stripe 自动分账
- Error loading property file
- 关于微软无线鼠标适配的问题
- 26.gateway的IP 认证拦截,gateway做token验证 流程图(springcloud)
- 探讨Linux CPU的上下文切换原由
- 玩转Python脚本开发-01
- Backdoor.Trojan专杀工具