导读 ^_^

买卖股票的系列问题四!
这回的限制是全局最多能买卖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];}
};

#谢谢你的观看!

^_^

买卖股票的最佳时机四相关推荐

  1. _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II

    _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机.122.买卖股票的最佳时机II 题目列表 121.买卖股票的最佳时机 122.买卖股票的最佳时机II 1 ...

  2. 聊聊买卖股票的最佳时机

    前言 大家好,我是大赛哥,好久不见,天天想念! 最近梳理高频动态规划问题,股票问题当然是非常经典的动态规划问题,并且整个系列有好几道题,这里我整理了6道股票系列的经典问题分享给大家,咱们今天聊聊买卖股 ...

  3. 贪心相关:柠檬水找零、买卖股票的最佳时机、分发饼干、跳跃游戏 ...

    文章目录 一.柠檬水找零 二.买卖股票的最佳时机 三.买卖股票的最佳时机II 四.分发饼干 五.模拟行走机器人(困难) 六.跳跃游戏 七.跳跃游戏II(困难) 一.柠檬水找零 注意:是按顺序收取,不是 ...

  4. LeetCode #121 买卖股票的最佳时机 贪心 单调栈 动态规划

    LeetCode #121 买卖股票的最佳时机 题目描述 给定一个数组,它的第 iii 个元素是一支给定股票第 iii 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算 ...

  5. LeetCode714:买卖股票的最佳时机含手续费

    该题目和以下题目相关联,感兴趣的小伙伴可直接点击下面的链接! LeetCode121:买卖股票的最佳时机 LeetCode122:买卖股票的最佳时机 II LeetCode123:买卖股票的最佳时机 ...

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

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

  7. 动态规划-买卖股票的最佳时机 专题

    动态规划-买卖股票的最佳时机 专题 买卖股票的最佳时机(可以用贪心) 力扣题目链接 因为只能买卖一次. dp[i][j]数组的含义:第 i 天状态为 j 时的最大现金. 递推公式: 设dp[i][0] ...

  8. LintCode领扣算法问题答案:149. 买卖股票的最佳时机

    149. 买卖股票的最佳时机 描述 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格.如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润. 样例 1: 输入: ...

  9. 188. 买卖股票的最佳时机 IV(JavaScript)

    给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 k 笔交易. 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前 ...

最新文章

  1. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!
  2. java 时间戳加密_加密PHP中的时间戳并用Java解密
  3. 巨细!Python爬虫详解(建议收藏)
  4. spring mvc DispatcherServlet详解之拾忆工具类utils
  5. 高性能的序列化与反序列化:kryo的简单使用
  6. maven使用testng_使用ReportNG更好看的TestNG HTML测试报告– Maven指南
  7. 崭新的2020(洛谷P5886题题解,Java语言描述)
  8. ASP.NET 常用的33种代码(转,收藏一下,以备后查)
  9. Java进阶之路,Java程序员职业发展规划
  10. 曼妙音色要靠煲 多媒体音箱煲机大法
  11. 微信公众号调用扫一扫
  12. 水星无线网桥ssh服务器,水星路由的SSH连接步骤
  13. 【小程序开发】ios中时间显示为NaNNaN
  14. 【金融财经】金融市场一周简报(2017-10-13)
  15. 数学在计算机科学上的应用文献,计算机科学技术在数学中应用浅析
  16. PHP语法基础篇——除法取整和取余数
  17. QuickTester对象,对象侦测器和对象库
  18. 食品加工设备远程管理维护解决方案
  19. 说说抖音和小红书的交互和界面设计,您更喜欢哪一个?
  20. pyecharts 画K线图

热门文章

  1. MyBatis之批量删除语句
  2. 快速查看服务器中 Redis 的版本
  3. canvas drawImage() 方法
  4. 《计算机是怎样跑起来的》最全读书笔记--Binrry(冰蕊)
  5. Java 团体程序设计天梯赛-练习集-打印沙漏
  6. 面试 | 测试开发岗位面试题目回顾
  7. Java ConcurrentHashMap多线程下的正确使用
  8. 鸿蒙麒麟安卓骁龙IOS,华为用户“福利”!这10款麒麟芯片手机,能升级鸿蒙OS3.0!...
  9. Geosever部署及使用
  10. batchsize实验