当前位置: 首页 > news >正文

代码随想录算法训练营 Day 49 | 121.买卖股票的最佳时机,122.买卖股票的最佳时机 II

121.买卖股票的最佳时机

讲解链接:代码随想录-121.买卖股票的最佳时机

  1. 确定 dp 数组以及下标的含义:

    1. dp[i][0] 表示第 i 天持有股票所得最多现金
    2. dp[i][1] 表示第 i 天不持有股票所得最多现金
  2. 确定递推公式:

    1. 如果第 i 天持有股票即 dp[i][0], 那么可以由两个状态推出来

      1. 第 i-1 天就持有股票,那么就保持现状,所得现金就是昨天持有股票的所得现金 即:dp[i - 1][0]
      2. 第 i 天买入股票,所得现金就是买入今天的股票后所得现金即:-prices[i]
      3. 那么 dp[i][0]应该选所得现金最大的,所以 dp[i][0] = max(dp[i - 1][0], -prices[i]);
    2. 如果第 i 天不持有股票即 dp[i][1], 也可以由两个状态推出来

      1. 第 i-1 天就不持有股票,那么就保持现状,所得现金就是昨天不持有股票的所得现金 即:dp[i - 1][1]
      2. 第 i 天卖出股票,所得现金就是按照今天股票价格卖出后所得现金即:prices[i] + dp[i - 1][0]
      3. 同样 dp[i][1]取最大的,dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0]);
  3. dp 数组如何初始化

    1. dp[0][0]表示第 0 天持有股票,此时的持有股票就一定是买入股票了,因为不可能有前一天推出来,所以 dp[0][0] -= prices[0];​​
    2. dp[0][1]表示第 0 天不持有股票,不持有股票那么现金就是 0,所以 dp[0][1] = 0;​​
  4. 确定遍历顺序

    1. 从递推公式可以看出dp[i]都是由dp[i - 1]推导出来的,那么一定是从前向后遍历。
public int maxProfit(int[] prices) {int len = prices.length;int[][] dp = new int[len][2];dp[0][0] -= prices[0];dp[0][1] = 0;for (int i = 1; i < len; i++) {dp[i][0] = Math.max(dp[i - 1][0], -prices[i]);dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i]);}return dp[len - 1][1];
}

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

讲解链接:代码随想录-122.买卖股票的最佳时机 II

public int maxProfit(int[] prices) {int len = prices.length;int[][] dp = new int[len][2];dp[0][0] -= prices[0];dp[0][1] = 0;for (int i = 1; i < prices.length; i++) {dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]);dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i]);}return dp[len - 1][1];
}

相关文章:

代码随想录算法训练营 Day 49 | 121.买卖股票的最佳时机,122.买卖股票的最佳时机 II

121.买卖股票的最佳时机 讲解链接&#xff1a;代码随想录-121.买卖股票的最佳时机 确定 dp 数组以及下标的含义&#xff1a; dp[i][0] 表示第 i 天持有股票所得最多现金dp[i][1] 表示第 i 天不持有股票所得最多现金 确定递推公式&#xff1a; 如果第 i 天持有股票即 dp[i][0]&…...

精炼计算机网络——数据链路层(一)

文章目录 前言3.1 数据链路和帧3.1.1 数据链路和帧3.1.2 三个基本问题 3.2 点对点协议PPP3.2.1 PPP协议的特点3.2.2 PPP协议3.2.3 PPP协议的工作状态 总结 前言 上篇文章&#xff0c;我们一同学完了物理层的全部内容&#xff0c;在本篇文章中&#xff0c;我们初步学习数据链路…...

猿创征文|Spring系列框架之面向切面编程AOP

⭐️前面的话⭐️ 本篇文章将介绍一种特别重要的思想&#xff0c;AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff0c;即面向切面编程&#xff0c;可以说是OOP&#xff08;Object Oriented Programming&#xff0c;面向对象编程&#xff09;的补充和完善。 …...

IoT架构设计

当前有一个支持5000万用户并发访问的网站&#xff0c;每个用户都有一个IOT设备&#xff0c;用户可以查看设备状态&#xff0c;接受设备通知 1.架构设计 针对不同的业务量模型&#xff0c;可以采用不同的架构设计&#xff0c;如下&#xff1a; 低业务量模型 针对低业务量模型…...

EasyRecovery16电脑硬盘数据恢复软件功能讲解

硬盘是很常见的存储数据的设备&#xff0c;硬盘中很多重要的数据一旦丢失会很麻烦&#xff0c;不过现在有硬盘数据恢复软件可以自行在家恢复数据。今天的文章就带大家来看看硬盘恢复数据的软件EasyRecovery。 EasyRecovery 是一款专业的数据恢复软件&#xff0c;支持恢复不同存…...

信道通信基础 - 传输介质(双绞线、光纤)

文章目录 1 概述2 传输介质2.1 双绞线2.2 光纤 3 扩展3.1 网工软考真题 1 概述 2 传输介质 2.1 双绞线 双绞线&#xff1a;8 根铜导线每 2 根扭在一起&#xff08;百兆用 4 根&#xff0c;千兆必须用 8 根&#xff09;分类 2.2 光纤 光纤&#xff1a;利用光在 玻璃或塑料纤…...

黑马Redis原理篇

黑马Redis原理篇 1、数据结构1.1、动态字符串SDS1.2、IntSet1.3、Dict1.4、ZipList1.5、QuickList1.6、SkipList1.7、RedisObject1.8、五种数据结构1. String&#xff08;小EMBSTR,大RAW (SDS),少量整数INT&#xff09;2. List&#xff08;Redis3.2之后使用QuickList实现&#…...

Sql Server增加字段、修改字段、修改类型、修改默认值

1、修改字段名&#xff1a; alter table 表名 rename column A to B 2、修改字段类型&#xff1a; alter table 表名 alter column 字段名 type not null 3、修改字段默认值   alter table 表名 add default (0) for 字段名 with values 如果字段有默认值&#xff0c;则需要…...

计算机网络第一章(谢希仁第8版学习)

作者&#xff1a;爱塔居 专栏&#xff1a;计算机网络 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起加油 文章目录 目录 文章目录 一、网络、互连网、互联网&#xff08;因特网&#xff09;的概念 二、因特网的组成 三、交换方式 3.1 电路交换 3.2 分组交换 3.3 电路…...

Java反射机制

文章目录 Java反射机制一、反射的用处二、获取字节码文件对象的三种方式1.Class.forName形式2.class属性获取形式3.Student对象获取形式 三、获取构造方法四、获取成员变量五、获取成员方法六、反射的好处&#xff08;面试题&#xff09;七、反射的实例1.泛型擦除2.修改字符串的…...

New:dbForge Edge 2023 4in1 Enterprise Edition Crack

dbForge Edge 2023 4in1 Enterprise Edition 赋予自己开发和管理 SQL Server、MySQL、Oracle 和 PostgreSQL 数据库的广泛能力 dbForge Edge&#xff1a;您的终极多数据库解决方案 让我们来看看。您需要处理多个数据库管理系统。同时&#xff0c;您希望能够灵活有效地处理范围广…...

基于高效率IP路由查找的内容

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 实现最基本的前缀树查找,调研并实现某种IP前缀查找方案,- 基于forwarding-table.txt数据集(Network, Prefix Length, Port) - 本实验只考虑静态数据集&#xff0c;不考虑表的添加或更新- 以前缀树查找结果为基准&#xff0c;检…...

【VLAN如何划分?6个方法帮你解决!好用又简单!】

如何选择交换机&#xff1f;如何根据项目确定网络结构&#xff1f;交换机做为大家工作中最常用的设备之一&#xff0c;关于它的选择&#xff0c;不得不知。 在做项目时都有这样的疑问&#xff0c;因为参数决定了项目预算&#xff0c;常用的园区组网技术也是多种多样。 我们来…...

网络通信概述 -了解网络编程,什么是ip和端口,url

网络&#xff1a;网络就是一种辅助双方或者多方能够连接到一起的工具。 左&#xff1a;单机游戏&#xff08;无网络&#xff09; 右&#xff1a;网络游戏 网络编程&#xff1a;网络编程就是&#xff0c;让在不同的电脑上的软件能够进行数据传递&#xff0c;即进程之间的通信。…...

【Windows线程开发】Windows线程同步技术

我们在上一章节中讲解了关于Windows的线程基础&#xff0c;相信大家已经对线程有了基本的概念。这一章节中&#xff0c;我们来讲讲线程同步技术&#xff0c;包括加锁技术&#xff08;原子锁和互斥体&#xff09;和事件&#xff0c;信号量。 文章目录 一.原子锁二.互斥体三.事件…...

【数据结构与算法】- 期末考试

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…...

股票?看我用python采集数据制作成交量图表

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 开发环境 & 第三方模块: 解释器版本: python 3.8 代码编辑器: pycharm 2021.2 requests: pip install requests 爬虫 pyecharts: pip install pyecharts 数据分析 pandas: pip install pandas 数据分析 基本流…...

C++中的多态,以及多态的实现、以及实现多态的两个特例。

一、 多态是什么&#xff1f; 通俗点说&#xff0c;就是多种形态。具体点就是不同对象完成某种事情&#xff0c;会产生不一样的状态。 举个例子&#xff1a;就好比&#xff1a;买票的时候&#xff0c;普通人、学生、军人等等&#xff0c;他们买票有不同的结果&#xff0c;普通人…...

ESP32-C2系列开发板简介

C2是一个芯片采用4毫米x 4毫米封装&#xff0c;与272 kB内存。它运行框架&#xff0c;例如ESP-Jumpstart和ESP造雨者&#xff0c;同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统&#xff0c;受到了全球用户的信赖。它由支持Espressif以及所有…...

AI在狂飙,ChatGPT-4可直接在iPhone上使用啦

今天凌晨&#xff0c;OpenAI 正式在 App Store 推出了 ChatGPT 的 iOS app&#xff0c;瞬间冲上苹果商店免费榜第二名&#xff0c;效率榜第一名。 于是兴致勃勃的去下载体验了一番。整体不错&#xff0c;以后手机使用官方的 ChatGPT 更方便啦&#xff01;而且使用 GPT4 不再麻…...

告别手动映射!用AD域控组策略批量给员工电脑挂载共享盘(Windows Server 2016实战)

企业级共享存储自动化部署指南&#xff1a;基于AD域控的组策略实战每当新员工入职或部门调整时&#xff0c;IT管理员最头疼的莫过于重复配置几十台电脑的共享盘映射。财务部需要访问M盘的报表目录&#xff0c;市场部要连接N盘的设计素材&#xff0c;而手动设置不仅效率低下&…...

Flutter表单验证完全指南

Flutter表单验证完全指南 引言 表单验证是Web和移动应用中不可或缺的一部分&#xff0c;它确保用户输入的数据符合预期格式。本文将深入探讨Flutter中的表单验证技术和最佳实践。 一、表单验证基础 1.1 使用TextFormField TextFormField(decoration: const InputDecoration(lab…...

揭秘CuCl超低热导率:四声子散射与温度重正化的关键作用

1. 项目概述&#xff1a;为何要深挖CuCl的热导率&#xff1f;在材料科学和凝聚态物理的交叉领域&#xff0c;热输运性质的研究从来都不是一个孤立的课题。它直接关系到热电材料的转换效率、电子器件的散热能力&#xff0c;以及热障涂层的服役寿命。传统上&#xff0c;我们倾向于…...

雷电9模拟器上Frida失效?Lamda绕过方案详解

1. 为什么雷电9 Frida 的组合让人又爱又恨在安卓逆向、协议分析和安全测试一线干了十多年&#xff0c;我经手过不下两百个App的动态调试项目。其中大麦App这类票务平台&#xff0c;因为其频繁的签名校验、设备指纹绑定和JSBridge加固&#xff0c;几乎成了Frida初学者的“劝退第…...

2026年实用降AI率平台:亲测AI率从90%降至4%的省心方案

一、前言&#xff1a;2026年毕业必过AIGC检测门槛 2026年国内高校对学术论文的AIGC疑似度审核全面收紧&#xff0c;绝大多数院校都发布了明确的AIGC检测数值要求&#xff1a;985、211院校规定本科论文AI率需低于20%&#xff0c;硕士论文AI率不得高于15%&#xff0c;普通高校也普…...

Spring Boot项目里,我是怎么把文心一言API集成进去的(附完整代码)

Spring Boot项目中集成文心一言API的实战指南 最近在开发一个需要AI对话功能的Spring Boot应用时&#xff0c;我选择了百度的文心一言作为后端引擎。整个过程从申请API权限到最终实现流式响应&#xff0c;踩了不少坑也积累了一些经验。本文将分享如何在Spring Boot项目中优雅地…...

5分钟搭建炫酷企业抽奖系统:Magpie-LuckyDraw完整指南 [特殊字符]

5分钟搭建炫酷企业抽奖系统&#xff1a;Magpie-LuckyDraw完整指南 &#x1f389; 【免费下载链接】Magpie-LuckyDraw &#x1f3c5;A fancy lucky-draw tool supporting multiple platforms&#x1f4bb;(Mac/Linux/Windows/Web/Docker) 项目地址: https://gitcode.com/gh_mi…...

如何高效解决Windows游戏控制器兼容性问题:ViGEmBus的完整解决方案

如何高效解决Windows游戏控制器兼容性问题&#xff1a;ViGEmBus的完整解决方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否遇到过心爱的游戏控制器…...

告别截图!用UE4/UE5的WebUI插件,把实时数据大屏“搬”进数字孪生场景

告别截图&#xff01;用UE4/UE5的WebUI插件实现实时数据大屏与数字孪生场景的无缝融合在工业仿真和智慧城市领域&#xff0c;数据可视化大屏与三维场景的联动一直是技术难点。传统解决方案往往依赖静态截图或视频播放&#xff0c;导致数据延迟、交互缺失。本文将深入探讨如何通…...

XUnity.AutoTranslator:打破语言障碍,让Unity游戏实时翻译变得简单

XUnity.AutoTranslator&#xff1a;打破语言障碍&#xff0c;让Unity游戏实时翻译变得简单 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂外语游戏而烦恼吗&#xff1f;XUnity.AutoTranslat…...