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

时间:2020年12月17日
知识点:动态规划
题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/

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

解法

  1. 一看就是动态规划 一般来说动态规划的第一个是变化的天数 第二个是状态
  2. 这里有两个状态: 手上有股票 手上没股票 时能获得的最大利润
  3. 可以得出转移方程
    1. 当天手上没股票 = max(昨天手上没股票,昨天手上有股票+今天股票价格-手续费)
    2. 当天手上有股票 = max(昨天手上有股票,昨天手上没股票-今天股票价格)
  4. 返回最后一天手上没股票的
  5. 状态压缩

代码

#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
class Solution {public:int maxProfit(vector<int>& prices, int fee) {int n = prices.size();int have = -prices[0];int no = 0;for(int i = 1; i < n; i++){int pre_have = have;have = max(have,no - prices[i]);no = max(no,pre_have + prices[i]-fee);}return no;}
};
int main()
{vector<int> prices{1,3,2,8,4,9};int fee = 2;Solution s;cout<<s.maxProfit(prices, fee);return 0;
}

今天也是爱zz的一天哦!

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

  1. [LeetCode刷题笔记]714 - 买卖股票的最佳时机含手续费(C++/Python3/Java/动态规划/贪心)

    一.题目描述 给定一个整数数组 prices 和 整数 fee ,其中 prices[i] 表示第 i 天的股票价格,fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付 ...

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

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

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

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

  4. 《LeetCode刷题》—121. 买卖股票的最佳时机

    <LeetCode刷题>-121. 买卖股票的最佳时机 一.题目内容 原题连接:https://leetcode.cn/problems/best-time-to-buy-and-sell ...

  5. 力扣刷题day32|738单调递增的数字、714买卖股票的最佳时机含手续费、968监控二叉树

    文章目录 738. 单调递增的数字 思路 难点:遍历顺序 难点:设置flag 714. 买卖股票的最佳时机含手续费 贪心思路 难点 968. 监控二叉树 思路 难点:如何隔两个节点放一个摄像头 738 ...

  6. 力扣刷题day44|309最佳买卖股票时机含冷冻期、714买卖股票的最佳时机含手续费

    文章目录 309. 最佳买卖股票时机含冷冻期 思路 动态规划五部曲 714. 买卖股票的最佳时机含手续费 贪心思路 难点 动态规划思路 动态规划五部曲 309. 最佳买卖股票时机含冷冻期 力扣题目链接 ...

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

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

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

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

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

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

最新文章

  1. server-send event object
  2. linux修改mysql默认大小写配置,linux下设置mysql不区分大小写
  3. c语言复杂的程序代码,C语言中复杂结构的序列化
  4. Python-类基础
  5. linux怎么64位,在linux下如何查看CPU是否支持64位
  6. 将 EndNote 文献信息导出成 BibTeX 格式(可根据label排序)以及出现三个问号
  7. (八)构建一个Docker容器来训练Deep Fake Autoencoders
  8. 蓝桥杯 算法训练 矩阵乘法
  9. matlab调和均值滤波_中值和均值滤波---matlab实现
  10. linux漏洞抓鸡,风靡全球的Ms08-067漏洞抓鸡大曝光
  11. 苹果6s强制删除id锁_付费苹果解锁软件 屏幕解锁及AppleID解锁
  12. Vue关键词搜索高亮
  13. python xls文件转为csv
  14. 英特尔处理器排名_鲁大师公布三季度PC处理器、内存排行榜:AMD成最大赢家
  15. 用于自动化的 10 个杀手级 Python 脚本
  16. 大学物理实验-仿真实验-示波器的原理
  17. mac 版本navicate 如何安装破解版
  18. TensorFlow TFRecords简介
  19. QQ群加入代码在线获取
  20. 三年级计算机教案 渔舟唱晚,人音版五级上册音乐 渔舟唱晚 教案 .docx

热门文章

  1. 【爬虫】应用Python爬虫爬取豆瓣租房上的帖子信息
  2. 服务器怎么安装exis系统,exis 服务器安装
  3. 如何实现同一个ip下同一个80端口部署多个网站?
  4. Mac OS X pl2303 的驱动下载
  5. Oracle数据库学习--2个不错的网站
  6. 精伦iDR210读卡器驱动安装教程
  7. JS获取指定日期前后N天的日期、前N个月日期、后N个月日期
  8. stm32在官网下载标准库
  9. 基于人体感应模块的驱鸟器设计
  10. udc-core: couldn‘t find an available UDC - added [g_ether] to list of pending drivers