leetcode 121. Best Time to Buy and Sell Stock
题目描述
本题属于动态规划类问题。
dp数组的含义
dp[i][0]表示从第0天到第i天为止,处于持有股票的状态下,账户里的最大金额。
dp[i][1]表示从第0天到第i天为止,处于不持有股票的状态下,账户里的最大金额。
按照这个定义dp[n-1][1]就是问题的答案。
dp数组的初始化
dp[0][0] = -prices[0]; //表示买入了第0天的股票,手里账户金额是负数
dp[0][1] = 0; //表示到第0天为止,不持有股票即不买入第0天的股票的话,账户金额是0
递推公式的分析
从第0天到第i天为止,导致持有股票的状态有两种可能的原因:一是第0天到第i-1天的某一天买入了股票,对应dp[i-1][0]。二是第i天买入了股票,需要支付prices[i]。
dp[i][0] = max(dp[i-1][0],-prices[i]);
从第0天到第i天为止,导致不持有股票的状态有两种可能的原因:一是从第0天到第i-1天为止就是不持有股票的状态(此情况下,第i天没法卖出股票)。二是第i天卖出了股票,第i天能卖出股票的前提是从第0天到第i-1天为止是持有股票的状态。
dp[i][1] = max(dp[i-1][1],dp[i-1][0]+prices[i]);
代码
class Solution {
public:int maxProfit(vector<int>& prices) {int n = prices.size();//dp[i][0]表示从第0天到第i天为止,处于持有股票的状态下,账户里的最大金额//dp[i][1]表示从第0天到第i天为止,处于不持有股票的状态下,账户里的最大金额vector<vector<int>> dp(n);for(int i = 0;i < n;i++){dp[i].resize(2);}dp[0][0] = -prices[0]; //表示买入了第0天的股票,手里账户金额是负数dp[0][1] = 0; //表示到第0天为止,不持有股票即不买入第0天的股票的话,账户金额是0for(int i = 1;i < n;i++){//从第0天到第i天为止,导致持有股票的状态有两种可能的原因,//一是第0天到第i-1天的某一天买入了股票,对应dp[i-1][0]//二是第i天买入了股票,需要支付prices[i]dp[i][0] = max(dp[i-1][0],-prices[i]);//从第0天到第i天为止,导致不持有股票的状态有两种可能的原因://一是从第0天到第i-1天为止就是不持有股票的状态(此情况下,第i天没法卖出股票)//二是第i天卖出了股票,第i天能卖出股票的前提是从第0天到第i-1天为止是持有股票的状态dp[i][1] = max(dp[i-1][1],dp[i-1][0]+prices[i]);}return dp[n-1][1];}
};
相关文章:
leetcode 121. Best Time to Buy and Sell Stock
题目描述 本题属于动态规划类问题。 dp数组的含义 dp[i][0]表示从第0天到第i天为止,处于持有股票的状态下,账户里的最大金额。 dp[i][1]表示从第0天到第i天为止,处于不持有股票的状态下,账户里的最大金额。 按照这个定义dp[n-…...
UWB定位技术面临的主要挑战
UWB定位技术面临的主要挑战(品铂科技视角) 一、复杂工业场景下的信号稳定性挑战 品铂科技QM35825芯片虽通过4天线射频架构和接收分集技术将金属密集环境下的多径误差降低至传统方案的1/8,但在多层混凝土厂房或动态金属设备场景…...
获取 arm-none-eabi-ld 默认使用的链接脚本
使用如下命令 ./arm-none-eabi-ld --verbose > "arm-none-eabi-ld-default.ld"将输出重定向到一个 .ld 文件中。得到的文件内容如下 GNU ld (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 2.43.1.20241119Supported emulations:armelf using internal linke…...
无人机设备遥控器之多控一机技术篇
无人设备遥控器的多控一机技术,是指通过多个遥控器或控制端协同实现对同一台无人设备的精准控制。该技术融合了通信技术、信号处理与协同控制算法,其核心在于多源信号的融合处理与动态控制权分配。 一、技术原理 多源信号融合 通过接收多个遥控器发送的…...
python自动化浏览器标签页的切换
#获取全部标签页的句柄返回句柄的列表 handleswebdriver.window_handles#获取全部标签页的句柄返回句柄的列表 print(len(handles)) 切换标签页 handleswebdriver.window_handles webdriver.switch_to.window(handles[index])#切换到第几个标签页就写几 关闭标签页 关闭标…...
一个异步架构设计:批量消费RabbitMQ,批量写入Elasticsearch(golang实现)
在数仓团队,异步任务设计非常常见,主要原因就是数据量太大,不适合做成同步,在自动驾驶这个业务上,数据大到什么程度呢,单模块每天标签的上报数量就能达到5000W,如果算上车端挖掘、云端挖掘、标注…...
加固笔记本:无人机领域智能作业的可靠算力中枢
在无人机技术快速发展的今天,行业应用场景日益复杂化——从高空电力巡检到极地环境监测,从军事侦察到农业植保,无人机的智能化作业对计算设备的稳定性、环境适应性和数据处理能力提出了更高要求。鲁成伟业深耕工业计算领域十余年,…...
非参数 Spearman 相关在多组学分析中的力量及AI拓展
在大数据生物学时代,多组学分析为理解复杂的生物系统提供了前所未有的洞察力。然而,解读这些数据集内部错综复杂的关系需要强大且通用的分析工具。其中,非参数 Spearman 相关性作为一种揭示隐藏关联的有力方法脱颖而出。 AI拓展 多组学数据…...
大模型面经 | 请你介绍一下ReAct(Reasoning and Acting)?
大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...
如何高效使用 Text to SQL 提升数据分析效率?四个关键应用场景解析
数据分析师和业务人员常常面临这样的困境:有大量数据等待分析,但 SQL 编写却成为效率瓶颈。即使对于经验丰富的数据分析师来说,编写复杂 SQL 查询也需要耗费大量时间;而对于不具备 SQL 专业知识的业务人员,数据分析则更…...
Python对ppt进行文本替换、插入图片、生成表格
目录 1. 安装pptx2. 文本替换和插入图片3. 生成表格 1. 安装pptx pip install python-pptx2. 文本替换和插入图片 文本通过占位符例如{{$xxx}}进行标记,然后进行替换;图片通过ppt中的图形和图片中的占位符进行标记ppt如下 具体实现 from pptx import …...
OpenResty与Nginx的功能对比分析
OpenResty 和 Nginx 都是高性能的 Web 服务器和反向代理服务器,但它们在设计目标和功能上有显著区别。以下是它们的主要差异: 1. 核心定位 Nginx 是一个轻量级、高性能的 HTTP 服务器和反向代理,专注于静态内容服务、负载均衡和 HTTP 请求处…...
React 在组件间共享状态
在组件间共享状态 有时候,你希望两个组件的状态始终同步更改。要实现这一点,可以将相关 state 从这两个组件上移除,并把 state 放到它们的公共父级,再通过 props 将 state 传递给这两个组件。这被称为“状态提升”,这…...
1.Framer Motion 中 motion/react 和 motion/react-client 的用法和区别
背景知识:服务器端渲染 (SSR) 和客户端渲染 (CSR) 在理解这两个模块的区别之前,我们需要了解 React 应用的两种主要渲染方式: 服务器端渲染 (SSR): React 组件在服务器上被渲染成 HTML 字符串,然后发送给浏览器。浏览器接收到的…...
在 Redis 中存储对象类型的数据时,选择hash还是string?
在 Redis 中存储对象类型的数据时,选择 String(存储 JSON)还是其他数据结构(如 Hash),需根据业务场景、性能需求和数据操作模式综合权衡。以下是详细分析: 1. 使用 String 类型存储 JSON 适用场景 整体读写为主:频繁存取整个对象,如用户信息、配置信息。跨语言兼容性…...
使用Python+xml+shutil修改目标检测图片和对应xml标注文件
使用Pythonxmlshutil修改目标检测图片文件名和对应xml标注文件: import os import glob import xml.etree.ElementTree as et import shutildef change_labels(source_dir):name_id 18001file_list glob.glob(os.path.join(source_dir, "*.xml"))print…...
基于STM32、HAL库的PCA9557 I/O扩展器驱动程序设计
一、简介: PCA9557是NXP公司生产的一款8位IC总线I/O扩展芯片,主要特性包括: 工作电压:2.3V至5.5V 低待机电流消耗 8个通用输入/输出引脚 极性反转寄存器 内部上电复位 3个硬件地址引脚,最多可连接8个器件 400kHz快速IC总线 中断输出引脚 二、硬件接口: PCA9557 <-&g…...
【Qt】Qt 信号与槽机制全解析
🍑个人主页:Jupiter. 🚀 所属专栏:QT 欢迎大家点赞收藏评论😊 目录 一.信号和槽概述信号的本质槽的本质 信号和槽的使⽤连接信号和槽查看内置信号和槽通过 Qt Creator ⽣成信号槽代码⾃定义信号和槽带参数的信号和槽信…...
【QT】 QT定时器的使用
QT定时器的使用 1. QTimer介绍(1)QTimer的使用方法步骤示例代码1:定时器的启动和关闭现象:示例代码2:定时器每隔1s在标签上切换图片现象: (2)实际开发的作用 2.日期 QDate(1)主要方法 3.时间 QTime(1)主要方…...
golang使用stdio与子进程进行通信
在使用Cline调用本地MCP Server的时候,使用的是STDIO模式,也就是Cline启动一个子进程来运行MCP Server,然后通过STDIO来进行通信。这种方式即高效又安全。 import ("bufio""fmt""io""os/exec""…...
无服务器架构(Serverless)在Web开发与云原生中的应用研究
无服务器架构(Serverless)在Web开发与云原生中的应用研究 摘要 无服务器架构(Serverless Architecture)作为一种新兴的云计算范式,通过抽象化服务器管理,使开发者能够专注于业务逻辑的实现,而无需关注底层基础设施的运维。本文从研究学者的角度,探讨了无服务器架构的核…...
第IV部分有效应用程序的设计模式
第IV部分有效应用程序的设计模式 第IV部分有效应用程序的设计模式第23章:应用程序用户界面的架构设计23.1设计考量23.2示例1:用于非分布式有界上下文的一个基于HTMLAF的、服务器端的UI23.3示例2:用于分布式有界上下文的一个基于数据API的客户…...
java开发中的设计模式之单例模式
Java开发中的设计模式之单例模式 在软件开发中,设计模式是解决常见问题的最佳实践,单例模式(Singleton Pattern)作为一种创建型设计模式,能够确保一个类在整个应用程序中只有一个实例,并提供一个全局访问点…...
Vue 高级技巧深度解析
Vue 高级技巧深度解析 mindmaproot(Vue2高级技巧)组件通信EventBusprovide/inject$attrs/$listeners性能优化虚拟DOM优化函数式组件按需加载状态管理Vuex模块化持久化存储严格模式高级指令自定义指令动态组件异步组件渲染控制作用域插槽渲染函数JSX支持一、组件通信的进阶之道 …...
JVM:JVM与Java体系结构
一、JVM 基础概念 虚拟机可分为两类 一类是系统虚拟机,用于模拟计算机系统,常见的软件有 Virtual Box、VMware 等。它们能创建虚拟的计算机系统,就如同在我们的计算机中又安装了一台计算机另一类是程序虚拟机,例如 JVM࿰…...
大模型预标注和自动化标注在OCR标注场景的应用
OCR,即光学字符识别,简单来说就是利用光学设备去捕获图像并识别文字,最终将图片中的文字转换为可编辑和可搜索的文本。在数字化时代,OCR(光学字符识别)技术作为处理图像中文字信息的关键手段,其…...
JVM 垃圾回收
垃圾回收 在 C/C 没有自动垃圾回收机制的语言中,一个对象如果不再被使用,则需要手动释放,否则就会出现内存泄漏(不再使用的对象未被系统回收而导致内存溢出)。 Java 为了简化对象释放的操作,降低编程的复杂度,引入的…...
【Qt】初识Qt
文章目录 认识 Qt Creator 界面左边栏代码编辑区UI设计界面构建区 Qt Hello World 程序使用 "按钮" 实现纯代码方式实现可视化操作实现 使用 "标签" 实现存代码实现 可视化操作实现 项目文件解析.pro 文件解析widget.h 文件解析main.cpp 文件解析widget.cp…...
Python----机器学习(逻辑回归与二分类问题)
一、原理 逻辑回归是一种用于解决二分类问题的机器学习算法。其原理基于线性回归 模型,通过使用逻辑函数(也称为sigmoid函数)将线性回归的结果映射到 一个0到1之间的概率值,从而进行分类。 在实际生活中,通常一件事的结…...
YOLOv2 性能评估与对比分析详解
1. YOLOv2 简介 YOLOv2(You Only Look Once v2),也称为 YOLO9000,是 2016 年发布的目标检测模型,旨在改进 YOLOv1 的速度和准确性。它通过引入批量归一化、锚框和高分辨率输入等技术,显著提升了性能。YOLO…...
Java文件批量复制工具实现解析
目录 引言 1、需求背景 2、实现原理 3、实现步骤 3.1 路径预处理 3.2 复制路径解析 3.3 递归复制逻辑 4、测试用例 5、总结 引言 在项目开发中,文件复制操作是常见的需求场景。本文将解析一个基于Java NIO实现的文件批量复制工具,该工具支持多路径批量操作、目录递归…...
uniapp小程序位置授权弹框与隐私协议耦合(合而为一)(只在真机上有用,模拟器会分开弹 )
注意: 只在真机上有用,模拟器会分开弹 效果图: 模拟器效果图(授权框跟隐私政策会分开弹,先弹隐私政策,同意再弹授权弹框): manifest-template.json配置( "__usePr…...
深入理解 Java 内存区域与内存溢出异常
个人主页 文章专栏 文章目录 一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)Java 堆(五)方法区(六…...
算法复习(二分+离散化+快速排序+归并排序+树状数组)
一、二分算法 二分算法,堪称算法世界中的高效查找利器,其核心思想在于利用数据的有序性,通过不断将查找区间减半,快速定位目标元素或满足特定条件的位置。 1. 普通二分 普通二分适用于在有序数组中查找特定元素的位置。我们可以…...
4.15 代码随想录第四十四天打卡
99. 岛屿数量(深搜) (1)题目描述: (2)解题思路: #include <iostream> #include <vector> using namespace std;int dir[4][2] {0, 1, 1, 0, -1, 0, 0, -1}; // 四个方向 void dfs(const vector<vector<int>>& grid, vector<vector<bool&g…...
Apache HTTPD 换行解析漏洞
漏洞介绍 CVE-2017-15715 Apache HTTPD 是一个广泛使用的 HTTP 服务器,可以通过 mod_php 模块来运行 PHP 网页。在其 2.4.0 到 2.4.29 版本中存在一个解析漏洞,当文件名以 1.php\x0A 结尾时,该文件会被按照 PHP 文件进行解析,这…...
Spark-SQL(二)
一. 利用IDEA开发Spark-SQL 1 在pop.xml中添加spark-sql依赖 2 spark-sql测试代码 1)在idea中读取json文件创建DataFrame 2)SQL风格语法 3 )DSL风格语法 4) RDD转换成DataFrame,DataFrame转换成DataSet 5&#x…...
Node.js 操作 MySQL 数据库
环境检查 Node.js 环境验证 node -v # 确认版本 ≥14.x npm -v # 确认能正常输出 MySQL 服务检查 # Linux systemctl status mysql# Windows (CMD) sc query MySQL 数据库与表创建 创建数据库 CREATE DATABASE users CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode…...
linux运维篇-Ubuntu(debian)系操作系统创建源仓库
适用范围 适用于Ubuntu(Debian)及其衍生版本的linux系统 例如,国产化操作系统kylin-desktop-v10 简介 先来看下我们需要创建出来的仓库目录结构 Deb_conf_test apt源的主目录 conf 配置文件存放目录 conf目录下存放两个配置文件&…...
从“数据孤岛”到“万物互联”,PLC组网重构工控边界
在工业自动化领域,PLC作为现代智能制造的核心控制单元,其应用已从单一设备的逻辑控制延伸至全厂级生产系统的协同管理。作为工业自动化系统的控制核心,PLC不仅需要实现设备层级的操控,更要通过工业通信网络构建起设备间的数据交互…...
【ISP】AWB的基本原理介绍(基于灰度像素检测)
🎨 基于灰度像素检测的自动白平衡(AWB)算法原理与实现 在图像处理中,自动白平衡(AWB, Auto White Balance)是调整图像色温、还原真实色彩的关键算法之一。本文介绍一种经典实用的 AWB 方法 —— 基于灰度像…...
uniappx项目上架各手机平台
前段时间用uniappx开发的App,领导要求要在各个主要手机平台上上架了,本来不是我的任务,后来其他人没有空交给我了,上架小白一枚,哭唧唧的自己研究吧,根据领导发的账号密码登录各个平台上架,花费…...
DIB:Drone in Box- 室内外场景无人机无人化自主巡检技术方案
DIB:Drone in Box- 室内外场景无人机无人化自主巡检技术方案 作为大疆机场3的无人机无人化巡检方案的补充三个自主巡检方案: 方案一、M350AIBOX自主机场-适合室外无人机自主巡检 方案二、M4AIBOX自主机场-适合室内自主巡检 方案三、停机坪AIBOX 自主巡…...
【大模型】GPT-4、DeepSeek应用与Prompt使用技巧
GPT-4 作为目前最先进的大语言模型之一,在多个领域都有广泛的应用。以下是一些典型的应用实例以及相关的 Prompt 使用技巧,帮助你更好地发挥 GPT-4 的潜力。 一、GPT-4 应用实例 1. 内容创作 博客/文章写作:生成高质量的技术博客、营销文案、…...
《分布式软总线:不同频段Wi-Fi环境下设备发现兼容性难题》
分布式软总线技术作为实现设备互联互通的关键,正逐渐成为构建万物互联世界的基石。然而,当分布式软总线面临不同频段Wi-Fi环境时,设备发现的兼容性问题成为了阻碍其广泛应用的一大挑战。这一问题不仅影响着用户体验,也制约着分布式…...
微电网与分布式能源:智能配电技术的场景化落地
安科瑞顾强 随着数字化转型与能源革命的加速推进,电力系统正经历从传统模式向智能化、网络化方向的深刻变革。用户侧的智能配电与智能用电技术作为这一变革的核心驱动力,正在重塑电力行业的生态格局。本文将从技术架构、应用场景及未来趋势等维度&#…...
Flutter实战(1)-- 调试工具
Flutter实战调试篇:从开发到上线的完整指南 工欲善其事,必先利其器。 本文使用的Flutter的相关版本信息: Flutter 1.19.0-4.3.pre • channel beta Engine • revision 9a28c3bcf4 Tools • Dart 2.9.0 (build 2.9.0-14.1.beta) 本文是Flutte…...
每日算法(双指针算法)(Day 1)
双指针算法 1.算法题目(移动零)2.讲解算法原理3.编写代码 1.算法题目(移动零) 2.讲解算法原理 数组划分,数组分块(快排里面最核心的一步)只需把0改为tmp 双指针算法:利用数组下标来…...
无人机的群体协同与集群控制技术要点!
一、技术要点 通信技术 高效可靠的通信链路:无人机集群需要稳定、低延迟的通信网络,以实现实时数据传输和指令交互。通信方式包括无线自组织网络(Ad Hoc)、蜂窝网络、卫星通信等,需根据任务场景选择合适的通信技术。…...
Linux常见指令介绍上(入门级)
1. ls指令 功能:显示出当前目录下的所有子目录与文件。 PS:注意显示的是当前文件下的子目录与文件。 以下这些是可以和ls配套使用的一些选项 -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -d 将目录象文件一样显示,而不是显示其下…...