力扣小白刷题之714题买卖股票的最佳时机含手续费
题目描述
给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格;非负整数 fee 代表了交易股票的手续费用。
可以无限次交易(一笔交易指的是买入持有并卖出股票的过程),但每次交易都需要支付一笔手续费。
如果你已经购买了一个股票,在卖出它之前不能再继续购买股票了。
返回获得利润的最大值。
思路
参考自:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/solution/dong-tai-gui-hua-by-liweiwei1419-6/
第一步:状态定义
dp[i][j] 表示 [0, i] 区间内,到第 i 天(从 0 开始)状态为 j 时的最大收益。
这里 j 取两个值:
- 0:不持股
- 1:持股
第二步:状态转移方程
dp[i][0] :第 i 天不持股,可能是第 i - 1 天就不持股,也可能是第 i - 1天持股然后第 i 天刚卖出了
dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - pee + prices[i])
dp[i][1]:第 i 天持股,可能是第 i - 1 天就持股,也可能是第 i - 1天不持股然后第 i 天刚买入
dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i])
规定手续费在卖出的时候扣除
第三步:思考初始化
- dp[0][0] = 0;
- dp[0][1] = -1 * prices[0]
第四步:考虑输出
- 每一天都由前面几天的状态转换而来,最优值在最后一天,并且是不持股的状态。
代码
时间复杂度: O(N),N是股价数组的长度
空间复杂度: O(N),状态数组有 N行 2列,2 为常数,在计算复杂度时视为1.
第五步:思考状态压缩
因为当前行总是参考上一行的值,可以使用滚动数组优化。
并且还注意到当前行是参考另一张表格上一行的值,因此直接把第一维砍掉都可以,并且计算状态的时候,因为是“螺旋”计算的,在状态转移的时候,这两行的顺序可以互换。
优化代码
力扣小白刷题之714题买卖股票的最佳时机含手续费相关推荐
- 714. [C++]买卖股票的最佳时机含手续费
题目描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付手续费.如果你已经购买 ...
- 力扣刷题day32|738单调递增的数字、714买卖股票的最佳时机含手续费、968监控二叉树
文章目录 738. 单调递增的数字 思路 难点:遍历顺序 难点:设置flag 714. 买卖股票的最佳时机含手续费 贪心思路 难点 968. 监控二叉树 思路 难点:如何隔两个节点放一个摄像头 738 ...
- 力扣刷题day44|309最佳买卖股票时机含冷冻期、714买卖股票的最佳时机含手续费
文章目录 309. 最佳买卖股票时机含冷冻期 思路 动态规划五部曲 714. 买卖股票的最佳时机含手续费 贪心思路 难点 动态规划思路 动态规划五部曲 309. 最佳买卖股票时机含冷冻期 力扣题目链接 ...
- Leetcode刷题笔记 714. 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 时间:2020年12月17日 知识点:动态规划 题目链接:https://leetcode-cn.com/problems/best-time-to-buy-an ...
- 【LeetCode每日一题】——714.买卖股票的最佳时机含手续费
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...
- 力扣算法JS LC [714. 买卖股票的最佳时机含手续费] LC [968. 监控二叉树]
LC 714. 买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你 ...
- leetcode(力扣)738. 单调递增的数字||714. 买卖股票的最佳时机含手续费
738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strNum=to_string(n) ...
- 模拟卷Leetcode【普通】714. 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都 ...
- 714. 买卖股票的最佳时机含手续费(CPP)
714. 买卖股票的最佳时机含手续费 给定一个整数数组 pricespricesprices,其中第 iii 个元素代表了第 iii 天的股票价格 :非负整数 feefeefee 代表了交易股票的手续 ...
- 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树
LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...
最新文章
- 11个让你吃惊的Linux终端命令
- Spring 注解之@RestController与@Controller的区别
- bcc Reference Guide 中文翻译
- GoWeb开发_Iris框架讲解(三):路由功能处理方式
- 自动关机脚本2007-10-28 10:04@ECHO off
- 收入和贷款有什么关系?
- C# 数据类型及相互转换及常用基础
- spring mvc学习(40):restful的crud实现增加方式
- 什么是spooling技术 他有哪几部分组成_气调保鲜冷库有哪几部分组成?
- java版如何使区块常加载,Java类加载机制 - suer27zhu的个人空间 - OSCHINA - 中文开源技术交流社区...
- c语言的api_为什么C语言依然是必学的编程语言?
- 为什么HierachyViewer无法连接真机调试
- 简单新闻客户端APP设计
- Windows10卸载密钥导致win10未激活--解决
- 将m个相同的球全部放到n个相同的盒子里面有几种放法
- 【日常实用篇】解决2345压缩软件自带的流氓广告
- Excel导入后的后台响应数据前端已经接收但是响应不出来
- HTML jQuery实现点赞功能(模仿CSDN的样式)
- 【微信小程序常识】如何发布微信小程序体验版
- 命不好,因为你同床共枕的人