121. 买卖股票的最佳时机
题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/?envType=study-plan-v2&envId=top-100-liked
算法思路:
虽然已经提示我们使用贪心算法了,但是我最开始的时候却不知道怎么使用,因为如果我找最小的天购入但是不一定卖的出去(还是有点太全局思维了后来看来题解才明白)。
所以我是每次都找到这天后的最大值,得到一个maxValue数组,这样我们就可以通过maxValue[i] - prices[i]来找到这一天的理想收获。然后遍历找到最大的值。
但是我们怎么计算处maxValue数组呢,暴力肯定不行,所以我们可以通过map来记录我们还未遍历过的数的个数情况,我们每遍历过一个数我们就将他的个数-1,当减成0后我们就从map中移除他,如果我们我们上一次求出的maxV还在map中那么这个数肯定就是maxV,否则我们再去重新求maxV,这样可以极大降低时间复杂度。
代码实现:
public int maxProfit(int[] prices) {int[] maxPrices = new int[prices.length];//用map存一下我们还为遍历过的数的个数HashMap<Integer, Integer> map = new HashMap<>();for(int i = 0; i < prices.length; i++) {map.put(prices[i], map.getOrDefault(prices[i], 0) + 1);}//当前位置后的最大值int maxValue = -1;for(int i = 0; i< prices.length; i++) {//如果上次算出的最大值还在map中则一直都使用他做最大值if(maxValue != -1 && map.containsKey(maxValue)) {maxPrices[i] = maxValue;} else { //如果不在map中则重新计算maxValue = findMax(i+1, prices);maxPrices[i] = maxValue;}//在map中更新后续数的个数map.put(prices[i], map.get(prices[i]) - 1);//如果某数的个数为0则移除if(map.get(prices[i]) == 0) {map.remove(prices[i]);}}int max = 0;for(int i = 0; i < prices.length; i++) {max = Math.max(max, maxPrices[i] - prices[i]);}return max;}//找到start后的最大值public int findMax(int start, int[] prices) {int index1 = start, index2 = prices.length - 1;while (index1 < index2) {if (prices[index1] <= prices[index2]) index1++;else index2--;}return prices[index2];}
题解的做法是认为的最小值是被遍历过的数中的最小值,而不是直接找全局的最小值
算法实现:
public int maxProfit(int[] prices) {int min = Integer.MAX_VALUE;int max = 0;for(int i = 0; i < prices.length; i++) {if(prices[i] < min) { //如果当前价格比之前最低价格还低,则更新最低价格min = prices[i];} else { //如果当前价格比之前最低价格高,则计算当前价格与最低价格的差值,并更新最大值max = Math.max(max, prices[i] - min);}}return max;}
相关文章:
121. 买卖股票的最佳时机
题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/?envTypestudy-plan-v2&envIdtop-100-liked 算法思路: 虽然已经提示我们使用贪心算法了,但是我最开始的时候却不知道怎么使用,因为如果…...
Python Polars快速入门指南:LazyFrames
前文已经介绍了Polars的Dataframe, Contexts 和 Expressions,本文继续介绍Polars的惰性API。惰性API是该库最强大的功能之一,使用惰性API可以设定一系列操作,而无需立即运行它们。相反,这些操作被保存为计算图,只在必要…...
OpenCV-Python实战(10)——形态学
1、腐蚀 cv2.erode() 可以删除图像中的噪音点。 可以删除毛边。 分割图像(当图像连接的不够紧密时) 。 img cv2.erode(src*,kernel*,anchor*,iterations*,borderType*,borderValue*)img:目标图像。 src:原始图像。 kernel&…...
在Windows上读写Linux磁盘镜像的一种方法
背景 嵌入式开发中,经常会把系统的Linux磁盘镜像保存到Windows上,以便上传到网盘备份或发送给工厂,但是如果想读取/修改镜像中的某个文件,一般有2种方案: 直接访问 就是用虚拟磁盘软件将镜像文件挂载成磁盘…...
基于STM32F103控制L298N驱动两相四线步进电机
文章目录 前言一、模块参数二、接口说明三、准备工作四、直流电机驱动引脚接线效果展示 五、两相四线步进电机驱动步进电机相关概念拍数驱动时序引脚接线效果展示 六、参考示例 前言 L298N 是一种常见的双 H 桥电机驱动模块,广泛用于驱动直流电机和步进电机。它基于…...
Blazor开发中注册功能设计研究
Blazor开发中注册功能设计是为了用户可以高效、安全地完成注册并登录系统。以高效和用户友好为目标,结合校验、注册和登录功能,为用户提供一个完整的账户管理流程,同时保障系统安全性和稳定性。注册页面应该结构清晰、布局合理,既满足基本注册功能,又通过响应式设计与视觉…...
Docker安装体验kuboard-k8s多集群管理工具
文章目录 1.kuboard是什么?2.docker安装命令2.1 Linux上docker环境安装命令2.2 Windows上docker环境安装命令 3.登录访问3.1首页访问地址3.2 默认账号密码3.3 登录页3.4 首页 4总结 1.kuboard是什么? 参看官网: https://kuboard.cn/gitHub项目地址&…...
组建基于IPV6的网络
现在很多单位使用IPV6的网络,地址资源紧张的状况得到了缓解,很多单位目前采用双栈运行,就是网络设备上同时跑IPV4和IPV6。 IPV6的网络与IPV4网络的配置与IPV4基本相同,注意地址规则与格式的不同。 长度: IPv6地…...
浙江肿瘤医院病理库存储及NAS共享存储(磁盘阵列)方案-Infortrend普安科技
Infortrend金牌代理-燊通智联信息科技发展(上海)有限公司与院方多轮沟通,详细讨论性能与容量要求,最终决定采用GSe统一存储设备,与现有病理系统服务器无缝对接,每台设备配1.92T SSD作缓存加速原数据读写&am…...
UE5在蓝图中使用VarestX插件访问API
在Fab中安装好VarestX免费插件 这个插件可以用来远程请求http和api等,返回json等格式内容 插件网址 https://www.fab.com/zh-cn/listings/d283e40c-4ee5-4e73-8110-cc7253cbeaab 虚幻里开启插件 然后网上随便搜个免费api测试一下,这里我找了个微博热搜…...
QML学习(五) 做出第一个简单的应用程序
通过前面四篇对QML已经有了基本的了解,今天先尝试做出第一个单页面的桌面应用程序。 1.首先打开Qt,创建项目,选择“QtQuick Application - Empty” 空工程。 2.设置项目名称和项目代码存储路径 3.这里要注意选择你的编译器类型,以及输出的程…...
Java日志框架:log4j、log4j2、logback
文章目录 配置文件相关1. properties测试 2. XMl使用Dom4j解析XML Log4j与Log4j2日志门面 一、Log4j1.1 Logges1.2 Appenders1.3 Layouts1.4 使用1.5 配置文件详解1.5.1 配置根目录1.5.2 配置日志信息输出目的地Appender1.5.3 输出格式设置 二、Log4j22.1 XML配置文件解析2.2 使…...
tcp 的重传,流量控制,拥塞控制
tcp 的重传解决了什么问题tcp的几种重传机制分别解决什么问题?方案 1: 超时重传方案2: 快速重传选择性确认(sack)d-sack(重复接收) 滑动窗口:累计应答 流量控制解决什么问题?如何做的?问题1: 那如果第一次发送的数据都大于缓冲区的大小怎么办?问题2: 如果剩余大小为0会发生…...
【多时段】含sop的配电网重构【含分布式电源】【已更新视频讲解】
1 主要内容 之前分享了很多配电网重构的程序,每个程序针对场景限定性比较大,程序初学者修改起来难度较大,本次分享一个基础程序,针对含sop的配电网重构模型,含风电和光伏,优化了33节点网络电压合理性&…...
angular管道传多个参数
比如有个时间管道 time.pipe.ts import { Pipe, PipeTransform } from angular/core;Pipe({ name: time }) export class TimePipe implements PipeTransform {transform(value: any,type: any,isTime: boolean,): string {// 具体逻辑不写了} }使用的时候对时间字段的处理只需…...
STM32高级 以太网通讯案例1:网络搭建(register代码)
需求描述 驱动W5500芯片,设置好IP,测试网络是否连通。 思考: 驱动W5500芯片是通过spi协议,所以和spi相关的有四个引脚,MOSI(主出从入)MISO(主入从出)SCK(时…...
strncpy函数和使用案例
strncpy 是 C 语言标准库函数之一,用于字符串操作。它的功能是将源字符串(source)中的字符复制到目标字符串(destination)中,但最多复制 n 个字符。如果源字符串的长度小于 n,则目标字符串剩余的…...
Python调用Elasticsearch更新数据库
文章目录 Elasticsearch介绍Python调用Elasticsearch更新数据库 Elasticsearch介绍 Elasticsearch是一个基于Lucene的搜索引擎,它提供了一个分布式、多租户能力的全文搜索引擎,具有HTTP web接口和无模式的JSON文档。Elasticsearch是用Java开发的&#x…...
阿里云-将旧服务器数据与配置完全迁移至新服务器
文章目录 一:创建镜像二:将创建好的镜像复制到新服务器所在的目标地域(如果新服务器与镜像在同一地域就不用进行这一操作)三:将镜像配置到新服务器上四:导出安全组(如果新服务器与旧服务器使用同…...
redis cluster实验详解
华子目录 实验环境准备部署redis cluster添加节点删除节点redis cluster集群维护 实验 环境准备 再开3台主机 先把之前3台源码编译的redis删除 [rootredis-node1 ~]# cd /usr/local/redis/ [rootredis-node1 redis]# make uninstall[rootredis-node2 ~]# cd /usr/local/redi…...
网络技术-QoS策略以及如何定义 流分类,流行为,流策略
一:QoS策略简介 QoS策略由如下部分组成: 类,定义了对报文进行识别的规则。 流行为,定义了一组针对类识别后的报文所做的QoS动作。 通过将类和流行为关联起来,QoS策略可对符合分类规则的报文执行流行为中定义的…...
【小程序】自定义组件的data、methods、properties
目录 自定义组件 - 数据、方法和属性 1. data 数据 2. methods 方法 3. properties 属性 4. data 和 properties 的区别 5. 使用 setData 修改 properties 的值 自定义组件 - 数据、方法和属性 1. data 数据 在小程序组件中,用于组件模板渲染的私有数据&…...
实验五 时序逻辑电路部件实验
一、实验目的 熟悉常用的时序逻辑电路功能部件,掌握计数器、了解寄存器的功能。 二、实验所用器件和仪表 1、双 D触发器 74LS74 2片 2、74LS162 1片 3、74194 1片 4、LH-D4实验仪 1台 1.双…...
时序论文34|AdaWaveNet:用于时间序列分析的自适应小波网络
论文标题:AdaWaveNet: Adaptive Wavelet Network for Time Series Analysis 论文链接:https://arxiv.org/abs/2405.11124 论文代码:https://github.com/comp-well-org/AdaWaveNet/ 前言 这篇文章面向非平稳时间序列进行分析与建模&#x…...
Maven怎么会出现一个dependency-reduced-pom.xml的文件
问题 今天打包时突然发现,多出了一个名为dependency-reduced-pom.xml的文件 解决方法 由于使用了maven-shade-plugin插件导致的,在 <plugin> 标签下添加 <configuration><createDependencyReducedPom>false</createDependencyR…...
Vue.js组件(6):echarts组件
1 前言 本章主要对常用的echars图表展示进行基本的组件封装。使用该组件前需要在项目中引入echarts。官网:Apache ECharts npm install echarts --save 2 图表组件 2.1 折线图组件 组件属性:chartId,指定图表挂载div的id,注意不…...
在低版本 CUDA 环境下安装高 CUDA 版本的 PyTorch 及 DGL
项目中,代码环境需要 PyTorch 1.12.0 以上版本,但服务器上的 CUDA 版本仅为 10.1,官方支持的 PyTorch 最高版本为 1.7.0。导致无法直接使用所需的 PyTorch 版本。而且,DGL 也需要 0.9.1 版本,而 CUDA 10.1 不支持该版本…...
【SpringMVC】REST 风格
REST(Representational State Transfer,表现形式状态转换)是一种访问网络资源的格式。传统的资源描述方式通常如下: http://localhost/user/getById?id1http://localhost/user/saveUser 而 REST 风格的描述则更简洁:…...
windows C#-使用对象初始值设定项初始化对象
可以使用对象初始值设定项以声明方式初始化类型对象,而无需显式调用类型的构造函数。 以下示例演示如何将对象初始值设定项用于命名对象。 编译器通过首先访问无参数实例构造函数,然后处理成员初始化来处理对象初始值设定项。 因此,如果无参…...
【Sentinel】流控效果与热点参数限流
目录 1.流控效果 1.1.warm up 2.2.排队等待 1.3.总结 2.热点参数限流 2.1.全局参数限流 2.2.热点参数限流 2.3.案例 1.流控效果 在流控的高级选项中,还有一个流控效果选项: 流控效果是指请求达到流控阈值时应该采取的措施,包括三种&…...
安装与配置
《PHP Libxml》是一个在PHP中处理XML和HTML文档的重要库。它提供了丰富的API,支持DOM、SimpleXML和XMLReader等多种解析方式,广泛应用于各种编程语言和项目中。 安装与配置 安装: 在PHP中,libxml扩展通常是默认启用的。如果你需要手动安装&…...
optuna和 lightgbm
文章目录 optuna使用1.导入相关包2.定义模型可选参数3.定义训练代码和评估代码4.定义目标函数5.运行程序6.可视化7.超参数的重要性8.查看相关信息9.可视化的一个完整示例10.lightgbm实验 optuna使用 1.导入相关包 import torch import torch.nn as nn import torch.nn.functi…...
SpringAI人工智能开发框架006---SpringAI多模态接口_编程测试springai多模态接口支持
可以看到springai对多模态的支持. 同样去创建一个项目 也是跟之前的项目一样,修改版本1.0.0 这里 然后修改仓库地址,为springai的地址 然后开始写代码...
ONLYOFFICE 协作空间 3.0 新功能详解
ONLYOFFICE 协作空间 3.0 新功能详解 书接上文: ONLYOFFICE 协作空间 3.0 发布: 新增虚拟数据房间、用户类型、OAuth 2.0 等更新 简单的介绍了一下 ONLYOFFICE 协作空间 3.0 的新功能,今天我们详细介绍一下这些新功能。 关于 ONLYOFFICE 协作空间 O…...
湖南引力:低代码助力实现智慧养老管理系统
“低代码开发宛如一座神奇的桥梁,它以简洁高效的方式连接起创意与应用,降低了开发门槛,为企业和开发者带来前所未有的便捷与可能,开启了快速实现软件梦想的新征程。” ——王港,湖南引力科技有限公司 湖南引力科技有…...
React里使用lodash工具库
安装 使用命令 npm install lodash 页面引入 常见的引入方式 引入整个lodash对象: import _ from lodash按名称引入特定的函数: import { orderBy } from "lodash"; tips: 这两种引入方式都会引入整个lodash库, 体积大&#x…...
机器人C++开源库The Robotics Library (RL)使用手册(二)
由于RL库采用跨平台CMake源码,可以轻松在win、ubantu等平台部署、编译,win通常用VS编译器,为了便于使用、阅读,需要将CMake编译成VS工程。 1、准备三个工具:CMake、VS、QT 为了在Windows上编译RL和依赖项,您需要安装一个编译器(例如。,Visual Studio 2017)和跨平台构…...
Excel无法插入新单元格怎么办?有解决方法吗?
在使用Excel时,有时会遇到无法插入新单元格的困扰。这可能是由于多种原因导致的,比如单元格被保护、冻结窗格、合并单元格等。本文将详细介绍3种可能的解决方案,帮助你顺利插入新单元格。 一、消冻结窗格 冻结窗格功能有助于在滚动工作表时保…...
2024年-全球使用Delphi统计
Delphi是一款集成开发环境(IDE),旨在支持开发者高效地构建桌面、移动、Web 以及控制台应用程序,特别适合追求速度与效率的快速应用开发(RAD)流程。 根据 theirstack.com 网站的数据,我们大致描…...
行为树详解(5)——事件驱动
【分析】 如果行为树的节点很多,那么会存在要经过很多节点才会走到动作节点的情况。显然,性能上不如状态机。 每帧都需要重新遍历一系列节点才会走到动作节点,而实际上很多条件节点在数帧内不会有变化,这是造成性能问题的重要原…...
为什么深度学习和神经网络要使用 GPU?
为什么深度学习和神经网络要使用 GPU? 本篇文章的目标是帮助初学者了解 CUDA 是什么,以及它如何与 PyTorch 配合使用,更重要的是,我们为何在神经网络编程中使用 GPU。 图形处理单元 (GPU) 要了解 CUDA,我们需要对图…...
Kinova在开源家庭服务机器人TidyBot++研究里大展身手
在科技日新月异的今天,机器人技术在家庭场景中的应用逐渐成为现实,改变着我们的生活方式。今天,我们将深入探讨一篇关于家用机器人研究的论文,剖析其中的创新成果, 论文引用链接:http://tidybot2.github.i…...
Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)
Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一:使用fromsize实现分页 快速掌握Elasticsearch检索之二:滚动查询(scrool)获取全量数据(golang) 1、search_after检索 在前面的文章介绍了fromsize的普通分页…...
Day1 微服务 单体架构、微服务架构、微服务拆分、服务远程调用、服务注册和发现Nacos、OpenFeign
目录 1.导入单体架构项目 1.1 安装mysql 1.2 后端 1.3 前端 2.微服务 2.1 单体架构 2.2 微服务 2.3 SpringCloud 3.微服务拆分 3.1 服务拆分原则 3.1.1 什么时候拆 3.1.2 怎么拆 3.2 拆分购物车、商品服务 3.2.1 商品服务 3.2.2 购物车服务 3.3 服务调用 3.3.1 RestTemplate 3.…...
shell编程7
声明 学习视频来自B站UP主 泷羽sec for循环与while循环 for 循环 例子 代码如下: for i in seq 1 100 do echo $i done或者 for i in $(seq 1 100) do echo $i done 反引号的作用 在 shell 脚本中,反引号用于命令替换。它会将反引号中的命令执行,…...
Spring Boot中幂等性的应用
在 Spring Boot 中,幂等性是实现分布式系统设计和接口调用的一个重要概念,尤其在高并发、分布式环境下,确保接口重复调用不会引发系统数据异常至关重要。 幂等性概念 幂等性(Idempotence)是指一次请求和重复多次请求…...
深度学习笔记(9)——神经网络和反向传播
神经网络和反向传播 神经网络架构: 更多的神经元,更大的模型容量,使用更强的正则化进行约束。 神经网络的分层计算 f W 2 m a x ( 0 , W 1 x b 1 ) b 2 fW_2max(0,W_1xb_1)b_2 fW2max(0,W1xb1)b2,其中max函数体现了非线性,如果想要加深网络的层次,必须…...
Oracle Database 23ai 中的DBMS_HCHECK
在 Oracle 23ai 中,DBMS_HCHECK 包允许我们检查数据库中已知的数据字典问题。 几年前,Oracle 发布了 hcheck.sql 脚本(文档 ID 136697.1)来检查数据库中已知的数据字典问题。 DBMS_HCHECK 包意味着我们不再需要下载 hcheck.sql…...
Docker部署neo4j
查询镜像版本 docker search neo4j 以上代码运行会报异常:Error response from daemon: Get https://index.docker.io/v1/search?qneo4j&n25: read tcp 192.168.xxx.xxx:41734->xx.xxx.xx.xxx:443: read: connection reset by peer 这个提示无法访问&…...
大数据技术-Hadoop(二)HDFS的介绍与使用
目录 1、HDFS简介 1.1 什么是HDFS 1.2 HDFS的优点 1.3、HDFS的架构 1.3.1、 NameNode 1.3.2、 NameNode的职责 1.3.3、DataNode 1.3.4、 DataNode的职责 1.3.5、Secondary NameNode 1.3.6、Secondary NameNode的职责 2、HDFS的工作原理 2.1、文件存储 2.2 、数据写…...