题目:
给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入:k = 2, prices = [2,4,1]
输出:2
解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。

示例 2:

输入:k = 2, prices = [3,2,6,5,0,3]
输出:7
解释:在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4 。
随后,在第 5 天 (股票价格 = 0) 的时候买入,在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3 。

提示:

0 <= k <= 100
0 <= prices.length <= 1000
0 <= prices[i] <= 1000

答案:

class Solution {public int maxProfit(int k, int[] prices) {//1是持有,0是未持有//dp[i][j][0]表示第i天交易了j次时不持有股票, dp[i][j][1]表示第i天交易了j次时持有股票//定义卖出股票时交易次数加1if(prices.length == 0 || prices.length == 1) return 0;int n = prices.length, max = 0;int[][][] dp = new int[n][k + 1][2];for(int i = 0; i < k + 1; i++){dp[0][i][0] = 0;dp[0][i][1] = -prices[0];}for(int i = 1; i < n; i++){for(int j = 0; j < k + 1; j++){if(j == 0) dp[i][j][0] = dp[i - 1][j][0];else dp[i][j][0] = Math.max(dp[i - 1][j][0], dp[i - 1][j - 1][1] + prices[i]);dp[i][j][1] = Math.max(dp[i - 1][j][0] - prices[i], dp[i - 1][j][1]);if(i == n - 1){max = Math.max(max, dp[i][j][0]);}}}return max;}
}

【力扣】188. 买卖股票的最好时机 IV相关推荐

  1. 力扣:121. 买卖股票的最佳时机 题解

    力扣:121. 买卖股票的最佳时机 1 题目描述 2 题解 1 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 ...

  2. 力扣123.买卖股票的最佳时机Ⅲ买卖股票的最佳时机Ⅳ

    文章目录 一.力扣123.买卖股票的最佳时机Ⅲ 题目描述 方法一:无脑拆分为五种状态,然后用dp 二.力扣123.买卖股票的最佳时机Ⅳ 题目描述 方法一:划分2k种状态,用dp 一.力扣123.买卖股 ...

  3. 力扣 -- 123. 买卖股票的最佳时机 III

    题目链接:123. 买卖股票的最佳时机 III - 力扣(LeetCode) 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴. 参考代码: class So ...

  4. 【力扣】买卖股票的最佳时机 II

    目录 1.问题 2.示例 3.提示 4.思路 6.代码 1.问题 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格. 在每一天,你可以决定是否购买和/或出售股票 ...

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

    题目 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付手续费.如果你已经购买 ...

  6. 力扣123. 买卖股票的最佳时机 III

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

  7. 力扣--122. 买卖股票的最佳时机 II

    题目 python代码 def maxProfit(prices):maxPro = 0i = 1while i < len(prices):profit = prices[i] - price ...

  8. 算法训练第五十天 | 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

    动态规划part11 123.买卖股票的最佳时机III 题目描述 思路 拓展 188.买卖股票的最佳时机IV 题目描述 思路 易错点 123.买卖股票的最佳时机III 题目链接:123.买卖股票的最佳 ...

  9. 牛客题霸 [买卖股票的最好时机] C++题解/答案

    买卖股票的最好时机 题解: 设两个变量,一个为minn,一个为maxx 当遇到比当前minn还小的价钱时,就更新minn 当与minn大时,就计算如果这个价卖出,赚多少钱,maxx不断更新取最大值 这 ...

最新文章

  1. opencv下指定文件夹下的图片灰度化(图片的读取与保存)-------简单记录
  2. PHP命名空间的使用规则
  3. java 连连看_java—连连看-实现封装
  4. Python入门100题 | 第033题
  5. Qt学习笔记之网络编程
  6. 批处理判断文件夹是否存在
  7. mysql让数据-1_[1]mysql-对数据基本操作
  8. 【Javascript Demo】图片瀑布流实现
  9. WIFI断网: 802.11协议Deauthentication Reason Codes
  10. Project: Individual Project - Word frequency program
  11. Confluence 6 PostgreSQL 输入你的数据库细节
  12. 空调冷凝水管径选用原则
  13. 中投 汇金 中金 中登
  14. 计算机无法连接声音怎么办,电脑耳机没声音怎么设置|耳机插电脑没有声音解决方法...
  15. win10 文件系统错误-2147416359
  16. php 自动抢红包机制,用脚本实现自动抢红包
  17. 远程计算机网络会议有哪些优缺点,远程会议
  18. WLW离线编辑器的安装与使用
  19. kafka消息存储机制和原理
  20. [uni-app] 微信小程序 如何修改替换头像

热门文章

  1. HTML小游戏21 —— html5版暴打皮卡丘游戏(附完整源码)
  2. SQL合并查询数据,以逗号分隔
  3. centos 卸载软件
  4. 数据库关系代数运算----自然连接
  5. 2023年全球运维大会(GOPS深圳站)- 峰会核心PPT资料下载
  6. 信必优(Symbio)绽放iWorld数字世界博览会
  7. 中国迪士尼商店推出《花木兰》高定服装设计师郭培联名款
  8. android 中间件开发
  9. 用Navicat创建student表
  10. 代码随想录——二叉树(一):前中后序遍历,层序遍历,翻转