博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 714. 买卖股票的最佳时机含手续费
阅读量:4115 次
发布时间:2019-05-25

本文共 853 字,大约阅读时间需要 2 分钟。

给定一个整数数组 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.

注意:

0 < prices.length <= 50000.0 < prices[i] < 50000.0 <= fee < 50000.

思路:

该题做法跟之前的leetcode122 有点类似,都是求设计一个算法来计算你所能获取的最大利润。但是本题是尽可能地完成更少的交易,因为每一笔交易会附带手续费(即在卖出股票的次数最少)

代码:

class Solution {
public int maxProfit(int[] prices, int fee) {
if(prices == null || prices.length <=1){
return 0; } int n = prices.length; int[] dp_0 = new int[n]; int[] dp_1 = new int[n]; dp_0[0] = 0; dp_1[0] = -prices[0]; for(int i=1; i

转载地址:http://bpwpi.baihongyu.com/

你可能感兴趣的文章
在openwrt上添加lua-cjson,并打补丁
查看>>
C的最优路径
查看>>
Linux shell实现阳历转农历
查看>>
打印回形数组
查看>>
C++格式化输出
查看>>
实现string
查看>>
统计文本中字符数和单词数
查看>>
按下标打印单词
查看>>
链表练习
查看>>
加密与解密;解压缩
查看>>
插入排序和快速排序
查看>>
类与继承
查看>>
给定两个整形变量的值将两个值的内容进行交换
查看>>
求10 个整数中最大值。
查看>>
求两个数的最大公约数
查看>>
总结c语言的操作符
查看>>
练习3
查看>>
求出0〜999之间的所有“水仙花数”并输出。
查看>>
编程求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和(a是一个数字);编程验证花括号成对出现。
查看>>
输出菱形
查看>>