代码随想录训练营Day 51|力扣121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

1.买卖股票的最佳时机

视频讲解:动态规划之 LeetCode:121.买卖股票的最佳时机1_哔哩哔哩_bilibili

代码随想录

代码:

class Solution {
public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size(),vector<int>(2,0));// dp[i][0]表示当天持有股票的最大收入// dp[i][1]表示当天不持有股票的最大收入dp[0][0] = 0 - prices[0];dp[0][1] = 0;for(int i = 1; i < prices.size(); i++){// 持有股票:前一天就已经买入了股票 或 当天买入股票dp[i][0] = max(dp[i - 1][0],-prices[i]);// 不持有股票:前一天就卖出了股票 或 在持有股票的前提下,当天卖出股票dp[i][1] = max(dp[i - 1][0] + prices[i],dp[i - 1][1]);}return dp[prices.size() - 1][1];}
};

 思路:

dp数组的含义:dp[i][0]表示当天持有股票的最大收入;dp[i][1]表示当天不持有股票的最大收入

dp数组的递推: 持有股票:前一天就已经买入了股票 或 当天买入股票,即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数组的初始化:第0天,就持有股票,只能是当天买入了股票dp[0][0] = -prices[0];第0天就不持有股票,且题上说只能在不同的天数卖出,所以只能是没有买入股票的状态 dp[0][1] = 0

dp数组的遍历顺序:后一天的dp元素值依赖于前一天的值,所以正序遍历即可。

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

视频讲解:动态规划,股票问题第二弹 | LeetCode:122.买卖股票的最佳时机II_哔哩哔哩_bilibili

代码随想录

 代码:

class Solution {
public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size(),vector<int>(2,0));// dp[i][0]表示当天持有股票的最大利润// dp[i][1]表示当天不持有股票的最大利润dp[0][0] = -prices[0];dp[0][1] = 0;for(int i = 1; i < prices.size(); 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[prices.size() - 1][1];}
};

思路:

        和上一题基本一样,不同的就是我们这次可以多次买卖股票。具体在代码上的不同就是——在持有股票的当天买入的表达式中,我们从-prices[i] 变为了 dp[i-1][1] - prices[i]。我们在前一天不持有股票的基础上买入,而不是在没有买卖任何股票的情况下(也就是0)买入。

dp数组的含义:dp[i][0]表示当天持有股票的最大收入;dp[i][1]表示当天不持有股票的最大收入

dp数组的递推: 当天持有股票:可能是前一天就持有股票 或 前一天不持有股票的前提下当天买入股票,即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]);

dp数组的初始化:第0天不持有股票,只能是压根就没买股票或者是当天买入又卖出了,都是dp[0][1] = 0;第0天持有股票,只能是dp[0][0]  = -prices[0]

dp数组的遍历顺序:后一天的dp值依赖于前一天的值,正序遍历

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

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

相关文章

Golang time CST以及UTC介绍

package main import ( "fmt" "time" ) func main() { fmt.Println(time.Now()) fmt.Println(time.Now().UTC()) //Influxdb采用RFC3339格式确定起止时间&#xff0c;所以必须将格式进行对应转换&#xff0c;将其转换为该格式即可 fmt.Println(time.Now().…

线性数据结构-队列

队列&#xff08;Queue&#xff09;是一种先进先出&#xff08;First In First Out, FIFO&#xff09;的数据结构&#xff0c;它按照元素进入的顺序来处理元素。队列的基本操作包括&#xff1a; enqueue&#xff1a;在队列的末尾添加一个元素。dequeue&#xff1a;移除队列的第…

在 Debian 上使用和配置 SSH 的指南

SSH&#xff08;Secure Shell&#xff09;是用于在不安全网络上安全登录远程计算机和执行命令的协议。本文将详细介绍如何在 Debian 系统上安装、配置和使用 SSH。 1. 安装 SSH 首先&#xff0c;您需要安装 OpenSSH 服务器和客户端&#xff08;也可直接安装服务器端&#xff…

38、Flink 的 WindowAssigner 之 GlobalWindows 示例

1、注意 使用 GlobalWindows 需要自定义 Trigger&#xff0c;否则窗口中的数据不会被计算。 2、代码示例 import org.apache.flink.streaming.api.datastream.DataStreamSource; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org…

我的创作纪念日--我和CSDN一起走过的1825天

机缘 第一次在CSDN写文章&#xff0c;是自己在记录学习Java8新特性中Lambda表达式的内容过程中收获的学习心得。之前也有记录工作和生活中的心得体会、难点的解决办法、bug的排查处理过程等等。一直都用的有道笔记&#xff0c;没有去和大家区分享的想法&#xff0c;是一起的朋…

C++第二十四弹---从零开始模拟STL中的list(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、基本结构 2、基本函数实现 2.1、默认构造函数 2.2、尾插数据 3、迭代器的封装 3.1、迭代器的基本结构 3.2、迭代器重载函数的实现 4、迭…

大家都在用的4款超实用视频剪辑软件,快来码住自用吧!

随着自媒体行业的不断发展&#xff0c;不少小伙伴也逐渐步入了短视频的热潮。对于短视频制作来说&#xff0c;视频剪辑软件的选择非常重要。 如果剪辑软件不够好&#xff0c;整个视频就基本垮掉了。今天就给大家推荐4款好用的视频剪辑软件。 1.牛学长视频剪辑 推荐剪辑新手入门…

win11通过网线分享网络到Ubuntu工控机

1.条件&#xff1a;一个能无线联网的win11&#xff0c;一根网线&#xff0c;一台Ubuntu工控机&#xff0c;并且使用网线连接两者 2.在win11电脑上 2.1 打开控制面板的网络和Internet 2.2 进入网络和共享中心&#xff0c;在左侧进入 更改适配器设置 2.3 在WLAN上右键&#xff0…

如何通过Python SMTP配置示例发附件邮件?

Python SMTP配置的步骤&#xff1f;SMTP服务器的优缺点有哪些&#xff1f; 当我们需要发送包含附件的邮件时&#xff0c;自动化的解决方案显得尤为重要。Python提供了SMTP库&#xff0c;使我们能够轻松配置并发送带有附件的邮件。AokSend将通过一个示例来展示如何操作&#xf…

【数据结构与算法】线索二叉树

文章目录 线索二叉树线索二叉树的结点存储结构 二叉树线索化先序线索化递归实现 中序线索化递归实现 后续线索化递归实现 线索二叉树的遍历先序线索二叉树的遍历中序线索二叉树的遍历后续线索二叉树的遍历 线索二叉树 传统的二叉链表存储二叉树&#xff0c;仅能表示一种父子关…

AIGC会带来失业潮吗?紧紧跟时代第一步,如何学习AIGC

会&#xff0c;但AI淘汰的始终是跟不上时代的人。 现在很多公司都有AI培训&#xff0c;不仅GPT&#xff0c;还有Midjourney、Stable DIffusion等一系列AI工具。 像我们公司虽然今年招的少&#xff0c;但也会对新招的应届生统一进行AI培训。 用任正非先生的话来说就是&#x…

charles抓包工具之---添加vConsole

Charles Rewrite重写(详解&#xff01;必懂系列)-CSDN博客 chales 重写/断点/映射/手机代理/其他主机代理_charles 批量映射-CSDN博客 在 Charles 上添加 rewrite 规则&#xff0c;以便在响应的 <head> 部分添加 vConsole&#xff0c;可以按照以下步骤操作&#xff1a;…

【ARM】PK51-如何添加芯片型号的方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 遇到打开工程提示没有该芯片设备提示如何解决。 2、 问题场景 客户发来一个工程文件&#xff0c;打开后软件提示没有发现该芯片设备提示。 图 1 3、软硬件环境 1&#xff09;、软件版本&#xff1a;keil μvision…

弗莱明发现青霉素

1945年&#xff0c;弗莱明因青霉素获诺贝尔医学奖。在弗莱明之前有多人注意到了青霉能抑制细菌的生长&#xff0c;但是他们没有一个人像弗莱明那样做进一步的更深入的研究&#xff0c;更没有一个人像弗莱明那样确定了这个特殊的现象是由于青霉分泌的某种物质所致。所以&#xf…

CAD入门基础

一&#xff0c;新建一个CAD文件 1.新建文件 2.保存为.dwt文件 3.画直线 点击直线图标画直线&#xff0c;选中直线出现高亮&#xff0c;点击左键&#xff0c;出现" 取消 " 就是可以画下一条线段了 " 删除"就可以了删除了。 3、直接删除法 1. 首先&#xf…

Yolov10环境配置+训练自己数据集(Windows10)

1、环境: 1.1硬件环境: 显卡:GTX 1650 Supper cuda:10.2.89_441.22_win10 cudnn:10.2-windows10-x64-v8.0.4.30 需要使用英伟达显卡安装显卡驱动,根据显卡驱动的版本安装cuda和cudnn, 针对NVIDIA显卡,已安装驱动情况下,使用nvidia-smi命令可以非常方便查看显卡类型…

npm如何发布自己的插件包

npm如何发布自己的插件包 1、注册NPM账号&#xff1a; 如果你还没有NPM账号&#xff0c;你需要在https://www.npmjs.com/上注册一个。 2、登录NPM&#xff1a; 在命令行中运行npm adduser&#xff0c;并按照提示输入你的用户名、密码和邮箱。 3、初始化项目&#xff1a; …

【C++】C++提供类型转换的机制

目录 前言&#xff1a; 一&#xff0c;static_cast 二&#xff0c;reinterpret_cast 三&#xff0c;const_cast 四&#xff0c;dynamic_cast 前言&#xff1a; 传统的不同类型转换有隐式类型转换&#xff08;类型不匹配时编译器自动进行的转换&#xff0c;如&#xff1a;i…

Simulink建立4WIS线性二自由度参考模型

4WIS线性二自由度参考模型 基于前轮转向做了小改动&#xff0c;难度不大&#xff0c;相当于两个微分方程加了两项 Simulink向CarSim中输入四个车轮的转角 有一点注意&#xff0c;四轮转向&#xff0c;前后轴车轮转角不应相等&#xff0c;否则动画会很滑稽 同侧车轮转向角的大小…

各种内部排序算法的比较及应用(插入排序、交换排序、选择排序、归并排序、基数排序)

目录 内部排序 前言 1.内部排序算法的比较 1.1各种排序算法的特点、比较和适用场景 1.2排序算法的稳定性判断及改进 1.3更适合采用顺序存储的排序算法 1.4根据排序的中间过程判断所采用的排序算法 1.5各种排序算法的性质 2.内部排序算法的应用 2.1选取排序算法时需要…