算法打卡day42

今日任务:

1)121. 买卖股票的最佳时机

2)122.买卖股票的最佳时机II

3)复习day17

121. 买卖股票的最佳时机

题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode)

给定一个数组 prices,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

示例 1:
输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:
输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

文章讲解:代码随想录 (programmercarl.com)

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

思路:

这是一道经典的股票买卖问题,可以通过动态规划来解决。我们可以维护两个变量来记录当前的最低买入价格和最大利润。遍历股票价格数组,对于每一天的股票价格,我们更新最低买入价格和最大利润:

  1. 如果当前股票价格低于最低买入价格,则更新最低买入价格为当前价格;
  2. 否则,计算当前股票价格与最低买入价格之差,更新最大利润为当前利润与已记录的最大利润的较大值。
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        if not prices:
            return 0
        
        # 初始化最低买入价格和最大利润
        min_price = prices[0]
        max_profit = 0
        
        # 遍历股票价格数组
        for price in prices[1:]:
            # 更新最低买入价格
            min_price = min(min_price, price)
            # 计算当前利润
            profit = price - min_price
            # 更新最大利润
            max_profit = max(max_profit, profit)
        
        return max_profit

 

122.买卖股票的最佳时机II

题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode)

文章讲解:代码随想录 (programmercarl.com)

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

思路:

 

我们可以用动态规划来解决这个问题。在这个问题中,我们只关心最终能够获得的利润,而不需要具体的交易路径。因此,我们可以定义两个状态变量:

  1. hold:表示当前持有股票时的最大利润。
  2. not_hold:表示当前不持有股票时的最大利润。

对于每一天,我们有三种操作:

  1. 保持持有状态,即不卖出,这样利润不变。
  2. 卖出股票,这样我们的利润将增加当前股票的价格。
  3. 买入股票,这样我们的利润将减少当前股票的价格。

我们的目标是选择操作使得最终的利润最大化。因此,我们可以通过比较这三种操作的结果来更新状态变量 holdnot_hold

具体步骤如下:

  1. 首先,我们初始化 hold 为负无穷,表示当前不可能持有股票,而 not_hold 为 0,表示当前没有股票,利润为 0。
  2. 然后,我们遍历每一天的股票价格,对于每一天,我们都更新 holdnot_hold
    • 如果选择保持持有状态,即不卖出,则当前持有股票时的最大利润为上一状态的 hold
    • 如果选择卖出股票,则当前不持有股票时的最大利润为上一状态的 hold 加上当前股票价格。
    • 如果选择买入股票,则当前持有股票时的最大利润为上一状态的 not_hold 减去当前股票价格。
  3. 最终,我们返回 not_hold,因为在最后一天,我们希望不持有股票以获取最大利润。
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        if not prices:
            return 0
        
        # 定义状态变量
        hold = float('-inf')  # 持有股票时的最大利润
        not_hold = 0           # 不持有股票时的最大利润
        
        # 遍历股票价格数组
        for price in prices:
            # 计算当前持有股票时的最大利润
            hold = max(hold, not_hold - price)
            # 计算当前不持有股票时的最大利润
            not_hold = max(not_hold, hold + price)
        
        return not_hold

注意这里的hold(持有股票),我可以选择继续持有上一个状态的股票,就是继承上一状态的hold,也可以选择在当天持有股票,如果持有当前股票,那么此刻hold上一状态不持有股票的金额-当前股票价钱,比较这两个hold,谁大选择谁

no_hold(不持有股票),我们可以选择卖掉已经持有的股票,那么no_hold上一状态持有股票的金额+当前股票价格,另一种我们可以选择继续继承上一状态的不持有,比较这两个no_hold谁更大

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flutter笔记:Widgets Easier组件库(11)- 使用提示吐丝

Flutter笔记 Widgets Easier组件库(11)使用提示吐丝 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this …

【前端学习——网络相关】浏览器同源策略和跨域

浏览器的同源策略 为什么要有? 帮助阻隔恶意文档,减少可能被攻击的媒介。(就是为了安全) 如果非同源,共有三种行为受到限制 (1) Cookie、LocalStorage 和 IndexDB 无法读取。 (2…

央视影音 视频下载 2

浏览器猫抓插件,拿到视频地址,这个地址的播放不正常,花屏。https://dh5.cntv.qcloudcdn.com/asp/h5e/hls/2000/0303000a/3/default/6edd15a0ebb3467993bec51a95be0e22/2000.m3u8 改一下地址,把代码中的h5e去掉。网址改为https://…

解决MySQL进行group by 字段返回大量异常结果

目录 问题 原因 解决方案 问题 看这条sql CH2O这个字段的取值只有1,2,3,正常进行group by 分类累加统计返回结果应该是这样: [{"CH2O": 2.0,"insufficient_weight": 142,"Normal_Weight": 164…

锁相环原理解析

在计算机和嵌入式系统中,常常要用锁相环来倍频,那么,锁相环是如何倍频的,其原理又是什么呢? 目录 1. 锁相环基本概念与构成1.1 鉴相器1.2 低通滤波器1.3 压控振荡器 2. 锁相环如何实现倍频3. 锁相环也会失效&#xff…

基于springboot+vue+Mysql的租房网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

[C++核心编程-01]----C++内存四区详细解析

前言 当程序运行时,操作系统会为程序分配一块内存空间,这块内存空间被划分为不同的区域,每个区域有其独特的作用和管理方式。四个区域分别为:堆、栈、全局/静态存储区和常量存储区。每个区域都有不同的作用和特点&#xf…

夏目友人帐所有妖怪名单

夏目友人帐妖怪名单 夏目友人帐 第一季 2008.07.07第1话:猫和友人帐 / 猫と友人帐 菱垣 狞影 斑第2话:露神之祠 / 露神の祠 露神 濯第3话:八原的怪人 / 八ツ原の怪人 一只目 牛头(中级妖怪)第4话:时雨与少女…

PHP源码_众筹商城

众筹商城源码 众筹商品平台 商城加共识元富之路 网上商城众筹 前端是编译后的,后端PHP,带商城 运行截图 源码贡献 https://githubs.xyz/boot?app39 部分数据库表 CREATE TABLE ti_shopro_store (id int(11) NOT NULL AUTO_INCREMENT COMMENT ID,nam…

英语复习之英语形近词总结(二)

接着总结形近词 单词释义例句 impress 英 /ɪmˈpres/ 美 /ɪmˈpres/ vt.盖印;强征;传送;给予某人深刻印象 vi.给人印象。印象,印记;特征,痕迹 1.It didnt impress me as a good place to live. 那地方…

基于openEuler22.03 LTS环境的docker容器基础

一、说明 本文配置环境为VMware虚拟机或华为云服务器(4核CPU,8 GB内存,40GB磁盘),OS为openEuler 22.03 LTS ,Linux服务器要求能联网。 二、安装docker 2.1 安装docker软件包 [rootnode01 ~]# dnf -y in…

电机控制系列模块解析(15)—— 母线小电容

一、薄膜电容 在家电产品和工业变频器中,使用容值更小但耐压更高的薄膜电容来代替传统的电解电容作为逆变器母线电容,这种技术趋势已经得到了广泛应用和产品化。以下是关于这一替换技术的一些关键考量和优势: 长期稳定性与可靠性&#xff1a…

3-qt综合实例-贪吃蛇的游戏程序

引言: 如题,本次实践课程主要讲解贪吃蛇游戏程序。 qt贪吃蛇项目内容: 一、功能需求 二、界面设计 各组件使用: 对象名 类 说明 Widget QWidge 主窗体 btnRank QPushButton 排行榜-按钮 groupBox QGroupBox 难…

牛客NC383 主持人调度(一)【简单 排序 Java/Go/C++】

题目 题目链接: https://www.nowcoder.com/practice/e160b104354649b69600803184094adb 思路 直接看代码,不难Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返…

CMakeLists.txt语法规则:控制编译的变量

一. 简介 前面一篇文章学习了 CMakeLists.txt语法中的 部分常量变量,具体学习提供信息的变量。 本文继续学习 CMakeLists.txt语法中:控制编译的变量。 二. CMakeLists.txt语法规则:控制编译的变量 这些变量可以控制编译过程,…

[C语言]指针进阶详解

指针是C语言的精髓所以内容可能会比较多,需要我们认真学习 目录 1、字符指针 2、指针数组 3、数组指针 3.1数组指针的定义 3.2&数组名vs数组名 3.3数组指针的使用 4、数组传参和指针传参 4.1一维数组传参 4.2二维数组传参 4.3一级指针传参 4.4二级指…

【Docker学习】docker run的端口映射-p和-P选项

docker run的端口映射选项分为-p(小写,全称--publish),-P(大写,全称--publish-all),之前认为只有改变容器发布给宿主机的默认端口号才会进行-p的设置,而不改变默认端口号…

现代信号处理8_递归的最小二乘(CSDN_20240505)

递归的最小二乘大约出现在50年前。递归,就是在已经算出的结果的基础下,当新的数据到来时,不需要再对数据进行一次完整的运算,而是在已有结果的基础上做一些简单的调整,就能得到新的结果。使用递归的好处: …

面试中算法(使用栈实现队列)

使用栈来模拟一个队列,要求实现队列的两个基本操作:入队、出队。 栈的特点:先入后出,出入元素都是在同一端(栈顶)。 队列的特点:先入先出,出入元素是在两端(队头和队尾)。 分析&…

ICode国际青少年编程竞赛- Python-1级训练场-for循环与变量

ICode国际青少年编程竞赛- Python-1级训练场-for循环与变量 1、 a 1 for i in range(4):Spaceship.step(a)Dev.step(2)Dev.step(-2)a a 12、 a 1 for i in range(4):Spaceship.step(a)Dev.step(3)Dev.step(-3)a a 13、 a 1 for i in range(4):Dev.turnLeft()Dev.step(…
最新文章