算法学习 || 动态规划(买卖股票的最佳时机2)

买卖股票的最佳时机--js 算法 给你一个整数数组 prices,其中 prices[i] 是第 i 天股票的价格(美元),以及一个整数 k。你最多可以进行 k 笔交易,每笔交易可以是以下任一类型:普通交易:在第 i 天买入,然后在之后的第 j 天卖出,其中 i < j。你的利润是 prices[j] - prices[i]。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。 阅读详情

买卖股票的最佳时机2

思路:

动态规划:

动规五部曲:

1.dp数组及其下标含义

dp数组表示当天持有股票或未持有股票的利润,使用二维数组,行(有多少天就有多少行)表示每一天,列(2列)表示持有和未持有的状态

2.确定递推公式

1.持有股票的递推公式:dp[i][0] = max(dp[i-1][0], dp[i-1][1] - prices[i]); 与买卖股票的最佳时机1不同的是可以进行多次交易股票,当天的利润需要昨天和今天来决定,之前因为只能交易一次,但是可多次交易后,当天买入的利润要加上之前可能已经获得的利润(dp[i - 1][ 1 ] - prices[ i ];),dp[ i - 1][ 1 ]是之前获得的利润。
2.未持有股票的递推公式:dp[i][1] = max(dp[i-1][1],dp[i-1][0] + prices[i]);与买卖股票的最佳时机1不同的是可以进行多次交易股票,当天的利润需要昨天和今天来决定,之前因为只能交易一次,但是可多次交易后,当天卖出的利润要加上之前可能已经获得的利润(dp[i - 1][ 1 ] + prices[ i ];),dp[ i - 1][ 1 ]是之前获得的利润。

3.dp数组的初始化

dp[0][0] = -prices[0]; 持有的初始就是买入第一天
dp[0][1] = 0; 未持有的初始就是第一天不买入

4.遍历顺序:

从前往后

代码:

class Solution {
public:
int maxProfit(vector& prices) {
int len = prices.size();
if (len == 0) return 0;
vector<vector> dp(len,vector(2));
dp[0][0] -=prices[0];//dp数组表示的实际上是利润
dp[0][1] = 0;
for(int i =1;i<len;i++)//遍历天数
{
dp[i][0] = max(dp[i-1][0], dp[i-1][1] - prices[i]);
dp[i][1] = max(dp[i-1][1],dp[i-1][0] + prices[i]);
}
return dp[len-1][1];
}
}; 在这里插入代码片

反思与总结:

与之前买卖股票1不同的是,可以多次交易,影响的是递推公式在当天持有后卖出或买入时,要加上之前的收益,而买卖股票1因为只能交易一次,所以之前的收益是0

【java】力扣 买卖股票的最佳时机 动态规划 采用动态规划来写,用的是java语言 阅读详情

相关推荐

suse ha for sap scale-up性能优化场景安装配置

suse ha for SAP安装配置

jetliu05的博客 2135

《LeetCode》—— 买卖股票的最佳时机

动态规划题目的讲解

m0_56069910的博客 3550

ESP32水墨屏日历实战:低功耗自动更新与HTTPS数据解析

本文详细介绍了ESP32水墨屏日历项目的开发实践,重点讲解了低功耗自动更新与HTTPS数据解析的实现方法。通过ESP32的自动休眠功能和水墨屏的零功耗特性,结合HTTPS请求安全获取网络数据,实现了高效节能的桌面日历应用。项目代码开源,适合物联网开发者参考。

xx56789的博客 777

动态规划 —— dp 问题-买卖股票的最佳时机IV

买卖股票的最佳时机Ill动态规划 —— dp 问题-买卖股票的最佳时机III-优快云博客。

hedhjd的博客 2336

PointMLP实战:5分钟用PyTorch搭建点云分类模型(附GitHub代码)

本文提供了基于ICLR 2022论文PointMLP的点云分类模型实战教程。通过PyTorch框架,详细介绍了从环境搭建、数据预处理、模型架构解析到训练推理的全流程,并分享了性能调优技巧。该模型利用残差MLP模块构建,结构清晰高效,适合开发者快速上手并应用于实际点云处理项目。

r2s3t4的博客 215

Verilog单周期CPU设计(超详细)

实验 单周期CPU一、设计目的与目标实验内容实验要求二、课程设计器材硬件平台软件平台三、 CPU逻辑设计总体方案指令模块MIPS指令格式指令处理流程数据通路总体结构图设计流程逻辑图四、模块详细设计PCAdd4PCINSTMEMDATAMEMSHIFTER32_L2SHIFTER_COMBINATIONMUX4X32MUX2X5EXT16T32MUX2X32CONUNITREGFILEALUSing...

Ace Cheney的博客 9万+

动态规划之买卖股票问题(篇一)(买卖股票的最佳时机)

本篇博客和接下来的几篇博客主要讲解一下中的,本篇博客主要讲解和。

2301_77160836的博客 1343

防止通达信公式被盗?手把手教你用DLL加密+互联网验证(含易语言后台管理)

本文详细介绍了如何通过DLL加密与互联网验证技术保护通达信公式安全。从DLL加密实现、设备绑定到易语言后台管理,提供了一套完整的防护方案,有效防止公式被盗用。重点讲解了互联网验证登录和绑定设备等核心技术,帮助量化交易者守护核心资产。

weixin_29323551的博客 501

算法打卡day42|动态规划篇10| Leetcode 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

JAVA算法|动态规划篇10| Leetcode 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

改变从现在开始 1939

鼎阳示波器SCPI指令与MD5算法解锁带宽升级实战

本文详细介绍了鼎阳示波器通过SCPI指令与MD5算法实现带宽升级的实战流程。从设备连接、信息获取到Python密钥生成脚本解析,逐步指导用户完成升级操作,并涵盖常见问题排查与功能选件激活指南,帮助用户充分释放设备潜能。

www00的博客 347

【光子 AI 】LangGraph:Graph = 有向有环图 + 状态机实现原理详解:数据结构模型与核心算法代码实现逻辑解析

LangGraph核心原理解析:基于Pregel模型的消息传递图,结合有向有环图和状态机特性。关键实现包括:1) 共享状态机制(TypedDict/Pydantic模型)配合Reducer逻辑实现状态更新;2) 图拓扑结构通过邻接表维护节点和条件边;3) 检查点机制支持状态持久化和恢复。运行时采用Pregel循环算法,通过超级步迭代执行节点函数、应用状态归约、条件路由下一批节点,同时支持人工中断和异步并行处理。该架构使LangGraph具备循环执行、条件跳转等DAG无法实现的动态流程控制能力。

AI天才研究院 1035

动态规划之买卖股票问题(篇二)(买卖股票的最佳时机)

本篇博客主要讲解和,是上篇博客中股票问题的进阶。

2301_77160836的博客 1242

基于多传感器融合的智身四足机器狗楼梯环境SLAM系统设计与实现

本文设计了一种基于多传感器融合的四足机器狗楼梯环境SLAM系统。系统采用Jetson Orin NX为主控制器,集成RealSense D435i深度相机和Livox Mid360激光雷达,在ROS2框架下实现平面定位精度<5cm、楼梯环境下导航不漂移的目标。通过多层次传感器融合策略、运动学约束优化和状态切换机制,解决了楼梯环境下的定位累积误差问题,实现了平面与楼梯环境的自动识别切换及精度复位功能。硬件设计注重传感器布局优化和精确标定,软件架构采用分层设计,确保实时性能。该系统为四足机器人在复杂地形中

huanghm88的专栏 241

Day43 | 动态规划 :状态机DP 买卖股票的最佳时机&&买卖股票的最佳时机II

状态机 dp股票问题

m0_74795952的博客 1716

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

动态规划分享之 —— 买卖股票的最佳时机

题号 / 名称问题描述交易次数限制特殊限制状态设计(dp[i][…])状态数DP 维度说明121. 买卖股票 I最多一次交易1 次无dp[i][0/1]2 个状态二维基础模型122. 买卖股票 II无限次交易无限制无dp[i][0/1]2 个状态二维贪心更优123. 买卖股票 III最多两次交易2 次无dp[i][0~4](状态机)5 个状态二维状态机 DP188. 买卖股票 IV最多 k 次交易给定 k无2k 个状态三维正统模型。

2402_86720949的博客 1781

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

一文搞定所有 — — 买卖股票的最佳时机问题

第

SoyMilk的博客 1446

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

买卖股票的最佳时机问题 C++

【题目描述】有一个价格数组prices,表示第i天的股票价格为prices[i],整个过程只能买入股票和卖出股票一次。并且买入股票必须再卖出股票之前。 【思路】贪心我们可以遍历一次数组,遍历到prices[i],表示在第i天卖出股票,为了使利益最大,我们需要在前i-1天中选择股票价格最低的一天买入。可以使用一个变量leftMin来记录前i-1天中,股票最低的价格。那么此时的最大利益就是prices[i]-leftMin。 动态规划dp[n][2]:dp[i][0]表示第i天未持有股票的最大利益,dp[i

2401_82677021的博客 1177

代码随想录Day41:动态规划(买卖股票的最佳时机、买卖股票的最佳时机II、买卖股票的最佳时机III)

同样dp[i][1]取最大的,dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0]);那么dp[i][0]应该选所得现金最大的,所以dp[i][0] = max(dp[i - 1][0], -prices[i]);一定是选最大的,所以 dp[i][1] = max(dp[i-1][0] - prices[i], dp[i - 1][1]);那么dp[i][1]究竟选 dp[i-1][0] - prices[i],还是dp[i - 1][1]呢?

m0_73724472的博客 1164

代码随想录-算法训练营day48(动态规划10:买卖股票的最佳时机,买卖股票的最佳时机2)

动态规划10:买卖股票

weixin_61931006的博客 1231

【动态规划Ⅶ】买卖股票的最佳时机

这个blog总结买股票系列题目,一些题目加了特定的限制条件以后,就需要改变一下策略啦!

massive_jiang的博客 1296

【动态规划】买卖股票的最佳时机(刷爆股票题)

本文的题目来自力扣买卖股票的最佳时机系列题目,共六题,如下图:该系列题考验的核心算法思想是动态规划,难度属于中上,第一题较为简单,这里拿来用作热身。121. 买卖股票的最佳时机 - 力扣(LeetCode)

2301_80555259的博客 1215

动态规划 25. 买卖股票的最佳时机

121. 买卖股票的最佳时机 - 力扣(LeetCode)代码随想录难度 3 - 简单这道题虽然是简单题,但还是有些门道的,这个dp算法的实现和优化做起来不太熟悉,要好好理解这里dp数组的定义另外,其实dp算法,还能将这道题理解为背包容量为1(只能放入一个物品)的 0/1 背包问题,放入背包就是持有状态,不放入就是非持有状态,但是递推的部分还是不太一样的。 动态规划: 1. DP 数组的定义 定义 ​​ ​ 和 ​​ ​ :​​:表示第 ​ 天 持有股票 时的最大收益(最优方案)。​​:表示第 ​ 天

m0_49844155的博客 1062

代码随想录算法训练营第四十三天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、 123.买卖股票的最佳时机III

状态:做出来了因为股票就买卖一次,那么贪心的想法很自然就是取最左最小值,取最右最大值,那么得到的差值就是最大利润。每天的状态要么是持有股票要么是不持有,那么手头的钱就可以分为:dp[i][0]表示第i天持有当前股票的最大利润、dp[i][0]表示第i天不持有当前股票的最大利润。那么这个状态如何变化的呢?既然持有的话,说明第i-1天是持有且没有卖,或者第i-1天不持有,但是买入第i天的股票了。所以dp[i][0] = max(dp[i-1][0],-price[i])

weixin_43903745的博客 954

算法-动态规划-121. 买卖股票的最佳时机1-5-C++

所以二维dp数组的C++定义为:确定递推公式还要强调一下:dp[i][1],表示的是第i天,买入股票的状态,并不是说一定要第i天买入股票,这是很多同学容易陷入的误区。达到dp[i][1]状态,有两个具体操作:操作一:第i天买入股票了,那么dp[i][1] = dp[i - 1][0] - prices[i]操作二:第i天没有操作,而是沿用前一天买入的状态,即:dp[i][1] = dp[i - 1][1]

weixin_43541510的博客 1500

动态规划 26. 买卖股票的最佳时机II

而本题,因为一只股票可以买卖多次,所以当第i天买入股票的时候,所持有的现金可能有之前买卖过的利润。唯一不同的地方,就是推导dp[i][0]的时候,第i天买入股票的情况**。我写代码的时候,注释写得已经很详细了就懒得再写一边思路了()中,因为股票全程只能买卖一次,所以如果买入股票,那么第。直接摘录代码随想录的分析(那么第i天持有股票即。

m0_49844155的博客 790

买卖股票的最佳时机 II

链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/solutions/476791/mai-mai-gu-piao-de-zui-jia-shi-ji-ii-by-leetcode-s/在动态规划中,我们通常将原问题分解为若干个子问题,并从底层的子问题开始逐步解决,将子问题的解保存起来,供后续使用。一共有 2n 个状态,每次状态转移的时间复杂度为 O(1),因此时间复杂度为 O(2n)=O(n)。这就是最优子结构的体现。

m0_55673629的博客 858
上一篇: 算法学习 || 动态规划(买卖股票的最佳时机)
下一篇: 算法学习 || 动态规划(买卖股票的最佳时机3)
dkingf
博客等级 码龄2年 127粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值