买卖股票的最佳时机四
导读 ^_^
买卖股票的系列问题四!
这回的限制是全局最多能买卖k次操作。
题目
leetcode 188
代码与思路
确定dp数组
dp[i][j] :第i天的状态为j,所剩下的最大现金是dp[i][j]
j的状态表示为:
0 表示不操作
1 第一次买入
2 第一次卖出
3 第二次买入
4 第二次卖出
.....
大家应该发现规律了吧 ,除了0以外,偶数就是卖出,奇数就是买入。
vector<vector<int>> dp(prices.size(), vector<int>(2 * k + 1, 0));
确定状态转移
dp[i][1] = max(dp[i - 1][0] - prices[i], dp[i - 1][1]);
dp[i][2] = max(dp[i - 1][1] + prices[i], dp[i - 1][2])
for (int j = 0; j < 2 * k - 1; j += 2) {dp[i][j + 1] = max(dp[i - 1][j + 1], dp[i - 1][j] - prices[i]);dp[i][j + 2] = max(dp[i - 1][j + 2], dp[i - 1][j + 1] + prices[i]);
}
初始化
for (int j = 1; j < 2 * k; j += 2) {dp[0][j] = -prices[0];
}
实现
//买卖股票的最佳时机IVclass Solution {
public:int maxProfit(int k, vector<int>& prices) {if (prices.size() == 0) return 0;vector<vector<int>> dp(prices.size(), vector<int>(2 * k + 1, 0));for (int j = 1; j < 2 * k; j += 2) {dp[0][j] = -prices[0];}for (int i = 1;i < prices.size(); i++) {for (int j = 0; j < 2 * k - 1; j += 2) {dp[i][j + 1] = max(dp[i - 1][j + 1], dp[i - 1][j] - prices[i]);dp[i][j + 2] = max(dp[i - 1][j + 2], dp[i - 1][j + 1] + prices[i]);}}return dp[prices.size() - 1][2 * k];}
};
#谢谢你的观看!
^_^
买卖股票的最佳时机四相关推荐
- _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II
_42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机.122.买卖股票的最佳时机II 题目列表 121.买卖股票的最佳时机 122.买卖股票的最佳时机II 1 ...
- 聊聊买卖股票的最佳时机
前言 大家好,我是大赛哥,好久不见,天天想念! 最近梳理高频动态规划问题,股票问题当然是非常经典的动态规划问题,并且整个系列有好几道题,这里我整理了6道股票系列的经典问题分享给大家,咱们今天聊聊买卖股 ...
- 贪心相关:柠檬水找零、买卖股票的最佳时机、分发饼干、跳跃游戏 ...
文章目录 一.柠檬水找零 二.买卖股票的最佳时机 三.买卖股票的最佳时机II 四.分发饼干 五.模拟行走机器人(困难) 六.跳跃游戏 七.跳跃游戏II(困难) 一.柠檬水找零 注意:是按顺序收取,不是 ...
- LeetCode #121 买卖股票的最佳时机 贪心 单调栈 动态规划
LeetCode #121 买卖股票的最佳时机 题目描述 给定一个数组,它的第 iii 个元素是一支给定股票第 iii 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算 ...
- LeetCode714:买卖股票的最佳时机含手续费
该题目和以下题目相关联,感兴趣的小伙伴可直接点击下面的链接! LeetCode121:买卖股票的最佳时机 LeetCode122:买卖股票的最佳时机 II LeetCode123:买卖股票的最佳时机 ...
- 【LeetCode每日一题】——714.买卖股票的最佳时机含手续费
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...
- 动态规划-买卖股票的最佳时机 专题
动态规划-买卖股票的最佳时机 专题 买卖股票的最佳时机(可以用贪心) 力扣题目链接 因为只能买卖一次. dp[i][j]数组的含义:第 i 天状态为 j 时的最大现金. 递推公式: 设dp[i][0] ...
- LintCode领扣算法问题答案:149. 买卖股票的最佳时机
149. 买卖股票的最佳时机 描述 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格.如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润. 样例 1: 输入: ...
- 188. 买卖股票的最佳时机 IV(JavaScript)
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 k 笔交易. 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前 ...
最新文章
- 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!
- java 时间戳加密_加密PHP中的时间戳并用Java解密
- 巨细!Python爬虫详解(建议收藏)
- spring mvc DispatcherServlet详解之拾忆工具类utils
- 高性能的序列化与反序列化:kryo的简单使用
- maven使用testng_使用ReportNG更好看的TestNG HTML测试报告– Maven指南
- 崭新的2020(洛谷P5886题题解,Java语言描述)
- ASP.NET 常用的33种代码(转,收藏一下,以备后查)
- Java进阶之路,Java程序员职业发展规划
- 曼妙音色要靠煲 多媒体音箱煲机大法
- 微信公众号调用扫一扫
- 水星无线网桥ssh服务器,水星路由的SSH连接步骤
- 【小程序开发】ios中时间显示为NaNNaN
- 【金融财经】金融市场一周简报(2017-10-13)
- 数学在计算机科学上的应用文献,计算机科学技术在数学中应用浅析
- PHP语法基础篇——除法取整和取余数
- QuickTester对象,对象侦测器和对象库
- 食品加工设备远程管理维护解决方案
- 说说抖音和小红书的交互和界面设计,您更喜欢哪一个?
- pyecharts 画K线图
热门文章
- MyBatis之批量删除语句
- 快速查看服务器中 Redis 的版本
- canvas drawImage() 方法
- 《计算机是怎样跑起来的》最全读书笔记--Binrry(冰蕊)
- Java 团体程序设计天梯赛-练习集-打印沙漏
- 面试 | 测试开发岗位面试题目回顾
- Java ConcurrentHashMap多线程下的正确使用
- 鸿蒙麒麟安卓骁龙IOS,华为用户“福利”!这10款麒麟芯片手机,能升级鸿蒙OS3.0!...
- Geosever部署及使用
- batchsize实验