LeetCode 188. 买卖股票的最佳时机 IV(动态规划)

1. 题目

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

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

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iv
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 121. 买卖股票的最佳时机
LeetCode 122. 买卖股票的最佳时机 II
LeetCode 123. 买卖股票的最佳时机 III(动态规划)
LeetCode 309. 最佳买卖股票时机含冷冻期(动态规划)
LeetCode 714. 买卖股票的最佳时机含手续费(DP)

这道题需要考虑一个 k 非常大的时候,k > n/2 时,就可以看做股票第2题了,无限次数。最多可以交易 min(k, n/2) 次

其他情况跟第3题一样

  • dp[i][k][0]表示第 i 天,经过最多 k 次交易,0不持有股票的最大收益
  • dp[i][k][1]表示第 i 天,经过最多 k 次交易,1持有股票的最大收益
class Solution {
public:int maxProfit(int k, vector<int>& prices) {if(prices.empty())return 0;int i, deal, n = prices.size();if(k > n/2)//股票第二题{int maxprofit = 0;for(int i = 1; i < prices.size(); i++) {if(prices[i] > prices[i-1])maxprofit += prices[i] - prices[i-1];}return maxprofit;}int dp[n][k+1][2];memset(dp,0,sizeof(dp));for(i = 0; i < n; ++i){for(deal = 1; deal <= k; ++deal){if(i == 0){dp[i][deal][0] = 0;dp[i][deal][1] = -prices[0];continue;}dp[i][deal][0] = max(dp[i-1][deal][0], dp[i-1][deal][1]+prices[i]);dp[i][deal][1] = max(dp[i-1][deal][1], dp[i-1][deal-1][0]-prices[i]);}}return dp[n-1][k][0];}
};

16 ms 12.8 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql slow log 分析工具_mysql slow log分析工具的比较

mysql 中的 slow log 是用来记录执行时间较长(超过 long_query_time 秒)的 sql 的一种日志工具。启用 slow log在 my.cnf 中设置[mysqld]slow_query_logonslow_query_log_filemysql-slow重启 MySQL 服务。五款常用工具mysqldumpslowmysqlslamyprofimysql-explain-slow-logmysql…

利用寄存器进入栈值交换

代码 varA, B: Word;beginA :1; B :2; asmmov ax, a //赋值 mov bx, b push ax //进栈 push bx pop ax //退栈 pop bx mov a, ax //利用栈先进后出, ax已退栈, 寄存器里的值为原bx 的值 mov b, bx //利用栈先进后出, bx已退栈, 寄存…

LeetCode 309. 最佳买卖股票时机含冷冻期(动态规划)

1. 题目 给定一个整数数组&#xff0c;其中第 i 个元素代表了第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;: 你不能同时参与多笔交易&#xff08;你必须在再…

mysql new map_使用构造器模式动态构建Map作为mybatis的查询条件

Map filter mapper.convertValue(this,Map.class);System.out.printf("查询条件:%s\n", JSON.toJSONString(filter));returnfilter;}//https://stackoverflow.com/questions/6796187/java-introspection-object-to-map/57057596#57057596public MaptoFilter2(){Map …

处理Excel,填充空白区域

在企业应用开发中经常是业务人员提供Excel的数据源&#xff0c;而开发人员将Excel数据导入到数据库中&#xff0c;然后在数据库中进行处理。在Excel中为了表示一种层次和所属关系&#xff0c;很多时候会产生很多空白的单元格。比如一个CRM数据&#xff0c;里面有销售团队、销售…

LeetCode 901. 股票价格跨度(单调栈)

1. 题目 编写一个 StockSpanner 类&#xff0c;它收集某些股票的每日报价&#xff0c;并返回该股票当日价格的跨度。 今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数&#xff08;从今天开始往回数&#xff0c;包括今天&#xff09;。 例如&#xff0c…

今天动手熟悉了一下css和php

手又痒了&#xff0c;动了动css和php&#xff0c;复习了已经忘了很久的csshttp://www.the520.cn/files/cssstudy/转载于:https://www.cnblogs.com/x2048/articles/1793996.html

Python核心教程(第二版)读书笔记(三)

第三章Python基础 2010-04-09 换行 一行过长的语句可以使用反斜杠‘\’分解成几行。有两种例外情况一个语句不使用反斜线也可以跨行。 1、在使用闭合操作符时&#xff0c;单一语句可以跨多行。例如&#xff1a;在含有小括号、中括号、花括号时可以多行书写。 2、三引号包括下的…

mysql没有写入权限_MySQL的权限系统

一、MySQL权限系统一)MySQL权限系统介绍权限系统的作用&#xff1a;授予来自某个主机的某个用户可以查询、插入、修改、删除等数据库操作的权限不能明确指定拒绝某个用户的连接权限控制(授权与回收)的执行语句包括create user&#xff0c;grant&#xff0c;revoke授权后的权限都…

LeetCode 1300. 转变数组后最接近目标值的数组和(二分查找)

1. 题目 给你一个整数数组 arr 和一个目标值 target &#xff0c;请你返回一个整数 value &#xff0c; 使得将数组中所有大于 value 的值变成 value 后&#xff0c;数组的和 最接近 target &#xff08;最接近表示两者之差的绝对值最小&#xff09;。 如果有多种使得和最接近…

AJAX 弹出窗消息类

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;using System.Text;using System.Web.UI;namespace WebApplication{ /// <summary> /// 消息类 /// /// /// </summary> public class Me…

mysql 创建初始化帐号_MySQL创建SCOTT用户及初始化数据

表结构create table dept(-- 部门编号deptno int unsigned auto_increment primary key,-- 部门名称dname varchar(15) ,-- 部门所在位置loc varchar(50))engine InnoDB;create table emp(-- 雇员编号empno int unsigned auto_increment primary key,-- 雇员姓名ename varchar…

潜在语义分析(Latent Semantic Analysis,LSA)

文章目录1. 单词向量空间、话题向量空间1.1 单词向量空间1.2 话题向量空间2. 潜在语义分析算法2.1 例子3. 非负矩阵分解算法4. TruncatedSVD 潜在语义分析实践一种无监督学习方法&#xff0c;主要用于文本的话题分析其特点是通过矩阵分解发现文本与单词之间的基于话题的语义关系…

python分割提取字符串_Python 字符串操作(截取/替换/查找/分割)

python字符串连接先介绍下效率比较低的&#xff0c;有些新手朋友就会犯这个错误&#xff1a;a [a,b,c,d]content for i in a:content content iprint content说下为什么效率会低呢&#xff1f;原因&#xff1a;在循环连接字符串的时候&#xff0c;他每次连接一次&#xff0…

CURL详解[全]

PHP中的CURL函数库&#xff08;Client URL Library Function&#xff09;curl_close — 关闭一个curl会话curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数curl_errno — 返回一个包含当前会话错误信息的数字编号curl_error — 返回一个包含当前会话错误信息的字符串…

基于sklearn.decomposition.TruncatedSVD的潜在语义分析实践

文章目录1. sklearn.decomposition.TruncatedSVD2. sklearn.feature_extraction.text.TfidfVectorizer3. 代码实践4. 参考文献《统计学习方法》潜在语义分析&#xff08;Latent Semantic Analysis&#xff0c;LSA&#xff09; 笔记 1. sklearn.decomposition.TruncatedSVD sk…

一个简单又高效的日志系统

摘要&#xff1a;本文给出一个性能高&#xff0c;使用简单的日志解决方案。本模块实现日志信息的批量写入文件&#xff0c;定时自动flush到文件中&#xff0c;写入文件的日志级别可动态调整&#xff0c;单个日志文件大小可配置&#xff0c;循环对日志文件写入&#xff0c;这样不…

R语言chorolayer_R语言空间可视化:绘制英国脱欧投票地图

添加法国&#xff0c;它位于右下方&#xff0c;因此我们应该看到一点…plot(FR,addTRUE)然后&#xff0c;我们可以检索英国退欧公投数据referendumddply(referendum,.(Region,HASC_code),summarise,Remainsum(Remain),Leavesum(Leave))我们可以发现&#xff0c;脱欧赢得了51.89…

概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA)

文章目录1. 概率潜在语义分析模型1.1 基本想法1.2 生成模型1.3 共现模型1.4 模型性质2. 概率潜在语义分析的算法概率潜在语义分析&#xff08;probabilistic latent semantic analysis&#xff0c;PLSA&#xff09;&#xff0c;也称概率潜在语义索引&#xff08;probabilistic …

网站变成灰色调

为方便站点哀悼&#xff0c;特提供css滤镜代码&#xff0c;以表哀悼。以下为全站CSS代码。html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1); } 使用方法&#xff1a;这段代码可以变网页为黑白&#xff0c;将代码加到CSS最顶端就可以实现素装。建议全国…