每日一题 2454. 下一个更大元素 IV(困难,单调栈)

news2024/9/20 0:56:37

在这里插入图片描述

  1. 首先考虑第一大整数问题
  2. 维护一个单调栈,遍历 nums,弹出栈中所有小于 nums[i] 的数,而 nums[i] 就是这些被弹出的数的第一大整数,知道栈为空或者栈顶元素比 nums[i] 大,证明如下,首先由于是遍历,所以 nums[i] 必定在栈中的元素之后,而如果 nums[i] 不是弹出的数的第一大整数(即在 i 之前还有比被弹出的数更大的整数),那么此时被弹出的数,应该在遍历到那个整数时就被弹出了
  3. 对于题目要求的第二大整数的问题,只需要对栈中每个元素进行计数,只有当一个栈中元素第二次需要弹出时才弹出他,否则不弹出,但是同样的 nums[i] 需要插入至第一个比他大的栈中元素的顶上,以维护栈的单调性
class Solution:
    def secondGreaterElement(self, nums: List[int]) -> List[int]:
        d = {}
        d[0] = [-1, -2]
        d[-2] = [0, -2]
        d[-1] = [-1, 0]
        n = [0] * len(nums)
        ans = [-1] * len(nums)
        for i in range(1, len(nums)):
            k = d[-2][0]
            while nums[i] > nums[k]:
                n[k] += 1
                if n[k] == 2:
                    ans[k] = nums[i]
                    d[d[k][0]][1] = d[k][1]
                    d[d[k][1]][0] = d[k][0]
                k = d[k][0]
                if k == -1:
                    break
            
            d[i] = [k, d[k][1]]
            d[d[k][1]][0] = i
            d[k][1] = i
        
        return ans

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

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

相关文章

Knowledge Graph知识图谱—9. Knowledge Modeling

9. Knowledge Modeling & Ontology Engineering How should the knowledge in a KG be modeled? – Which classes of entities do we have? – Which relations connect them? – Which constraints hold for them? → these questions are defined in the ontology …

【智能家居】九、停车场车牌识别功能点(回调、解耦)

一、翔云 人工智能开放平台(车牌识别) 二、cJSON 库 三、实现代码 四、回调函数 五、人脸识别和车牌识别获取数据的区别 六、异步网络请求和同步网络请求的区别 七、解耦 一、翔云 人工智能开放平台(车牌识别) 翔云 人工智能开放…

vxe-table 右键菜单+权限控制(v3)

1.menu-config 是用于配置右键菜单的属性。通过 menu-config 属性,定义右键菜单的内容、显示方式和样式。 通过 menu-config 属性配置了右键菜单,其中的 options 属性定义了右键菜单的选项。用户在表格中右键点击时,将会弹出包含这些选项的自…

数据库系统原理与实践 笔记 #12

文章目录 数据库系统原理与实践 笔记 #12事务管理和并发控制与恢复(续)并发控制SQL-92中的并发级别基于锁的协议基于锁的协议的隐患锁的授予封锁协议两阶段封锁协议多粒度粒度层次的例子意向锁类型相容性矩阵多粒度封锁模式基于时间戳的协议基于时间戳协议的正确性基于有效性检…

mysql:用SHOW CREATE TABLE tbl_name查看创建表的SQL语句

https://dev.mysql.com/doc/refman/8.2/en/show-create-table.html 可以用SHOW CREATE TABLE tbl_name查看创建表的SQL语句。 例如,SHOW CREATE TABLE test_table;表示查询创建test_table表的SQL语句:

关于电动机智能综合保护器在煤矿内的应用分析-安科瑞 蒋静

摘要 :介绍了矿用电动机智能综合保护器系统的总体结构,采用直接将交流信号整流、滤波、调理、采样的方式变为微控制器能够识别的直流信号,通过对微控制器采集到的直流信号编程判断来实现对电动机的相关保护控制、故障显示与报警以及与上位机的…

Jmeter性能测试:ForEach控制器的用法解析(含视频讲解)

引言 最近我在进行JMeter性能测试时遇到了一些问题,特别是在使用ForEach控制器时感到有点棘手。 但是经过不断地摸索和实践,终于成功地掌握了这个神奇的工具,提高了我的测试效率。因此,今天我想和大家分享我的经验,让…

优思学院|如何建立公司运营指标体系?如何推行六西格玛改进运营指标?

关键绩效指标 (KPI) 是测量您团队或组织朝重要商业目标进展表现如何的量化指标,组织会在多个层面使用 KPI,这视乎您想要追踪何指标而定,您可以设定全组织的、特定团队的、或甚至是个人 KPI。 良好的KPI能让公司管理者掌握组织的营运是否进度…

【(较大规模)作业车间调度JSP】通过OR-Tools的区间变量建模求解的效率对比实验

文章目录 问题描述Python调用OR-Tools建模求解(实验一)1. 声明问题的模型2. 创建区间变量3. 创建约束条件4. 求解模型5. 基于 plotly 展示甘特图 不同场景下的求解效率对比实验二:工件的工序数有差异实验三:消除工件的加工时长差异…

php实现个性化域名(短网址)和个性化登录模版的解决方案

在PHP中,个性化域名通常指的是根据用户或业务需求动态生成具有特定规律的子域名。实现个性化域名的方法主要依赖于服务器配置和路由规则。下面是一些基本的步骤和考虑因素,以帮助你了解如何个性化域名,并了解这样做的好处。 如何实现个性化域…

Cohort Analysis是什么

Cohort Analysis 什么是Cohort Analysis Cohort Analysis 可以翻译成 群体分析 或 分组分析,其实是一种通过细分来研究数据的方法。如下表就是一个从每日新增维度细分的 Cohort Analysis 表格。 第一列是分组的维度,下表以用户新增的日期作为细分的维…

Docker安装与使用

Docker 1.初识Docker Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题? Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,使用沙箱机制,相互隔离 Docker…

“未来医疗揭秘:机器学习+多组学数据,开启生物医学新纪元“

在当今的数字化时代,科技正在不断地改变着我们的生活,同时也为医疗领域带来了巨大的变革。随着机器学习的快速发展,以及多组学数据在生物医学中的应用,我们正开启一个全新的医疗纪元。这个纪元以精准诊断、个性化治疗和高效康复为…

体验即营销,如何用体验家实现高效的线索细分?

什么是线索细分? 线索细分,指的是将收集而来的线索根据用户行为、特征等信息划分成若干个小组,从而方便市场、运营等部门开展更精细化的营销动作。 为什么要进行线索细分? 不同的客户为企业带来的价值不同。许多情况下&#xff0c…

智能无人零售:革新零售消费体验的未来

智能无人零售:革新零售消费体验的未来 在当今数字化时代,智能无人零售正以惊人的速度改变着我们的购物方式和消费体验。这一新兴领域的发展,为消费者带来了前所未有的便利和个性化选择。 智能无人零售是指利用先进的智能技术和自动化系统&…

(十六)Flask之蓝图

蓝图 Flask蓝图(Blueprint)是Flask框架中用于组织和管理路由、视图函数以及静态文件的一种机制。它提供了一种将应用程序拆分为更小、可重用组件的方式,使得项目结构更清晰,代码更易于维护。 使用Flask蓝图,可以将相…

git强制回滚,远程强制更新,git pull强制更新

注意:这里是强制回滚,回滚后,之后历史的就没有了,慎用。 本地强制回滚 强制回滚到上一个版本 git reset --hard HEAD^强制回滚上上个版本 git reset --hard HEAD^^git log查看版本 git log --prettyonelinegit log --prettyf…

系列十、SpringBoot + MyBatis + Redis实现分布式缓存(基于注解方式)

一、概述 上篇文章 系列九、SpringBoot MyBatis Redis实现分布式缓存 介绍了基于xml方式实现分布式缓存的效果,当前大家使用的技术栈基本是springboot各种框架的组合,而springboot显著的一个特点就是去xml配置,那么在无xml配置的情形下&…

Java实现选择排序及其动图演示

选择排序是一种简单直观的排序算法。它的基本思想是每次从未排序的元素中选出最小(或最大)的元素,然后将其放到已排序的序列的末尾。具体步骤如下: 首先,找到未排序序列中的最小(或最大)元素&a…

关于代码质量度量和分析的一些总结

最近团队做CMMI3认证,这期间涉及到了代码质量度量。花了点时间做了总结,分享给大家。 先看一张整体的图,然后逐个指标展开说明。 一、单元测试覆盖率 单元测试覆盖率(Coverage)是一个度量单元测试覆盖了多少代码的指标…