第42天|LeetCode121. 买卖股票的最佳时机、LeetCode122. 买卖股票的最佳时机 II

news2024/11/14 21:16:29

1.题目链接:121. 买卖股票的最佳时机

题目描述:

                给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

                你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

                返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

解法:

        1.贪心:

                        ①此题只能买买卖股票一次。我们可以用贪心的写法来做。即求左边最小的和右边最大的

如何求?

                        ①定义Low = MAX;result = 0;

                        ②定义Low = min(Low,price[i])--- 就相当于在遍历的时候获取了从初始位置到当前位置的最小值。

                        ③result = max(result,prices[i] - Low) --- 就相当于取最大右边。此时如果出现721这样的数值,那么result会一直是0,所以符合。

                        ④最后返回result。

下面为代码(java):

 

        2.动态规划:

                                ①确定dp[][] 为什么是二维的?因为我们既要表示第几天也要表示该天是否持有股份的最大利润。所以是二维。故dp[i][0]表示的就是,第i天持有股份的最大利润dp[i][1]表示的就是,第i天不持有股份的最大利润

                                ②递推公式:

                                        dp[i][0] = ? 如果前面就持有了延续到这个位置,那就是dp[i-1][0];如果前面没有,就是新买入的,即 - prices[i] --- 因为只能买卖一次,所以如果买入的话就是-prices[i].

                                        故dp[i][0] = max(dp[i-1][0] , -prices[i]);

                                           dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i])---即前面不持有;前面持有,现在卖了。

                                ③初始化:根据前面的值求的,所以dp[0][0] = -prices[0];dp[0][1] = 0;其他值无所谓,因为都是根据的是前面的值求的当前值,所以可以初始化成0.

                                ④遍历顺序:因根据前面的值求的,所以从小到大遍历。

                                ⑤最后返回dp[prices.length-1][1]

下面为代码(java):

2.题目链接:122. 买卖股票的最佳时机 II 

题目描述:

                给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

                在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

                返回 你能获得的 最大 利润 。

解法:

                ①此题在前面用贪心做过一次就不再介绍了,介绍dp解法。

                ②此题和上题的不同就在于,可以多次买卖股票,所以在递推公式上有所不同,但是别的地方都差不多。即dp[i][0]仍表示,在第i天持有股票的最大价值为dp[i][0];dp[i][1]仍表示,在第i天不持有股票的最大价值为dp[i][1].

                ③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[nums.length-1][1] --- 因为最后一天一定是不持有股票的时候拥有最大利润。

下面为代码(java):

3.总结:

                ①两道股票问题,一个是只能买卖一次,一个是能买卖多次。

                ②用动态规划来解决总体思路差不多故dp含义一样,当前是否持有股票的最大利润都根据前面的值求,故初始化和遍历顺序一样的。

                ③但是递推公式不同,如果可以买卖多次的话再买的时候要加上前面已经买卖过的利润

                ④用贪心也可以解决且效率更高,但是贪心只能解决特定的股票问题,而dp可以解决股票系列问题。

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

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

相关文章

C++类基础(十六)

类的继承——继承与特殊成员函数 ● 派生类合成的…… – 缺省构造函数会隐式调用基类的缺省构造函数 – 拷贝构造函数将隐式调用基类的拷贝构造函数 – 赋值函数将隐式调用基类的赋值函数 struct Base {Base(){std::cout << "Base()\n";}Base(const Base&…

重生之我是赏金猎人-SRC漏洞挖掘(五)-轻松GET某src soap注入

0x01 挖掘 在对某SRC测试时&#xff0c;本人根据其证书信息收集到了部分深度子域&#xff0c;并找到了其对应的业务IP段 写了个shell脚本ffuf批量fuzz某src c段资产目录 发现了xxSRC c段的一个提供了webservice的服务器 http://180.x.x.x/webservice/ 获取到接口 http://1…

全国计算机等级考试报名照片要求以及证件照制作教程

马上就全国计算机等级考试就要开始了&#xff0c;相信现在很多同学都在网上进行报名呢&#xff0c;报名的时候肯定需要用到个人证件照片&#xff0c;所以问题来了&#xff0c;我们怎么自己制作证件照片呢&#xff1f;计算机等级考试报名时对证件照都有哪些要求呢&#xff1f;该…

06 antdesign react Anchor 不同页面之间实现锚点

react Anchor 不同页面之间实现锚点一、定义二、使用步骤三、开发流程(一)、组件(二)、页面布局(三)、点击事件(四)、总结说明一、react单页面应用&#xff0c;当前页面的锚点二、react单页面应用&#xff0c;不同页面的锚点思路&#xff1a;锚点只能在当前页面使用&#xff0c…

central cache设计及实现

你好&#xff0c;我是安然无虞。 central cache 设计及实现 central cache 也是一个哈希桶结构, 而且它的哈希桶的映射关系跟 thread cache 是一样的, 不同的是 central cache 每个哈希桶位置上挂的是 SpanList 双向链表结构, 而且每个哈希桶下面的 span 中的大块内存被按映射…

大数据之数据中台

目录数据仓库传统数据仓库无法支撑互联网时代的商业智能数据埋点数据仓库 数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合。 在电商场景中&#xff0c;有一个数据库专门存放订单的数据&#xff0c;另外一个数据库存放会员相关的数据。构建…

订单服务:订单流程

订单流程 订单流程是指从订单产生到完成整个流转的过程&#xff0c;从而行程了一套标准流程规则。而不同的产品类型或业务类型在系统中的流程会千差万别&#xff0c;比如上面提到的线上实物订单和虚拟订单的流程&#xff0c;线上实物订单与 O2O 订单等&#xff0c;所以需要根据…

[Datawhale][CS224W]图机器学习(三)

目录一、简介与准备二、教程2.1 下载安装2.2 创建图2.2.1 常用图创建&#xff08;自定义图创建&#xff09;1.创建图对象2.添加图节点3.创建连接2.2.2 经典图结构1.全连接无向图2.全连接有向图3.环状图4.梯状图5.线性串珠图6.星状图7.轮辐图8.二项树2.2.3 栅格图1.二维矩形栅格…

如何修改 类名::静态变量?

好久没更新了&#xff0c;其中经历了备战省赛&#xff0c;重装电脑&#xff0c;换服务器&#xff0c;重新搭建博客等一系列事&#xff0c;受到许多技术大牛的指点&#xff0c;而且新人太厉害了&#xff0c;卷卷卷&#xff01; Geek Challenge 2021有一道BabyPOP&#xff0c;这…

vue写一个翻页的时间插件

读秒效果有一个从上向下的翻页效果 效果图 clock代码 <template><div class"dateClock"><div class"todayClass"><p class"datep">{{dateToday}}</p><span style"float:right;font-size:16px">…

基于 VPX 总线的工件台运动控制系统研究与开发-DSP+FPGA硬件架构(一)

作为光刻机核心单元之一&#xff0c;超精密工件台主要负责实现快速扫描、上下片、精密定位、调平调焦等功能。目前&#xff0c;较为成熟的方案大多采用 VME 并行总线架构来建立超精密工件台控制系统&#xff0c;由于随着系统性能要求的提升&#xff0c;VME 总线以及相应的处理器…

最大连续子列和

给定一个数组&#xff0c;求它的最大连续子列和。这个问题有四种解法。 1、暴力循环(O(n^3))分析这个问题&#xff0c;既然是子列&#xff0c;那么它最长为n&#xff0c;最短为1。要想求和我们一般需要知道这个子列的左端下标和右端下标&#xff0c;再求这个子列的和。最简单的…

深入浅出带你学习Nginx中间件常见漏洞

前言 上篇文章总结了APACHE中间件的常见漏洞&#xff0c;本文介绍一个同样很常用的中间件——nginx&#xff0c;本文会讲解关于nginx中间件的常见漏洞利用方式与危害&#xff0c;下面展开来给大家讲解。 Nginx是什么&#xff1f; 在讲漏洞之前我们需要先知道什么是nginx,简单…

《SQL基础》11. 索引

SQL - 索引索引概述结构B-TreeBTreeHash思考分类语法SQL性能分析SQL执行频率慢查询日志profile详情explain执行计划索引失效情况范围查询索引列运算字符串不加引号模糊查询or连接条件数据分布影响使用规则最左前缀法则SQL提示覆盖索引前缀索引设计原则索引 概述 索引&#xf…

linux安装minio,注册服务实现开机自启动

一、安装1.创建安装目录mkdir -p /usr/local/soft/minio2.下载文件cd /usr/local/soft/miniowget -q http://dl.minio.org.cn/server/minio/release/linux-amd64/minio3.新建数据存储目录mkdir -p /home/minio/data4.授予可执行权限chmod x minio5.设置账号密码export MINIO_AC…

yolov8代码梳理 训练自己的数据 最终版

1.总结一下 最开始为了检测不规则的麻包袋&#xff0c;所以采用了目标检测。yolov3&#xff0c;fasterrcnn&#xff0c;ssd。这种矩形框还是可以用。后面检测的物体变成了规则的纸箱&#xff0c;我们还用目标检测发现&#xff0c;没有旋转角度&#xff0c;因为箱子的摆放不是正…

深度学习算法面试常问问题(三)

pooling层是如何进行反向传播的&#xff1f; average pooling&#xff1a; 在前向传播中&#xff0c;就是把一个patch的值取平均传递给下一层的一个像素。因此&#xff0c;在反向传播中&#xff0c;就是把某个像素的值平均分成n份 分配给上一层。 max pooling&#xff1a; 在前…

一文教你如何编写高效的接口测试,别再浪费时间了

目录 前言 1、什么是接口测试 2、为什么要做接口测试 3、接口测试的范围 4、接口测试的重点 5、测试原则 总结 前言 在所有的开发测试中&#xff0c;接口测试是必不可少的一项。有效且覆盖完整的接口测试&#xff0c;不仅能保障新功能的开发质量&#xff0c;还能让开发在…

PMP项目管理未来的发展与趋势

什么是项目管理&#xff1f;关于项目管理的解释主要是基于国际项目管理三大体系不同的解释及本领域权威专家的解释。 项目管理就是以项目为对象的系统管理方法&#xff0c;通过一个临时性的、专门的柔性组织&#xff0c;对项目进行高效率的计划、组织、指导和控制&#xff0c;以…

深度学习术语解释:backbone、head、neck,etc

backbone&#xff1a;翻译为主干网络的意思&#xff0c;既然说是主干网络&#xff0c;就代表其是网络的一部分&#xff0c;那么是哪部分呢&#xff1f;这个主干网络大多时候指的是提取特征的网络&#xff0c;其作用就是提取图片中的信息&#xff0c;共后面的网络使用。这些网络…