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

【LeetCode:496. 下一个更大元素 I + 单调栈】

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 单调栈
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 496. 下一个更大元素 I

⛲ 题目描述

nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1 。

返回一个长度为 nums1.length 的数组 ans 作为答案,满足 ans[i] 是如上所述的 下一个更大元素 。

示例 1:

输入:nums1 = [4,1,2], nums2 = [1,3,4,2].
输出:[-1,3,-1]
解释:nums1 中每个值的下一个更大元素如下所述:

  • 4 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。
  • 1 ,用加粗斜体标识,nums2 = [1,3,4,2]。下一个更大元素是 3 。
  • 2 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。
    示例 2:

输入:nums1 = [2,4], nums2 = [1,2,3,4].
输出:[3,-1]
解释:nums1 中每个值的下一个更大元素如下所述:

  • 2 ,用加粗斜体标识,nums2 = [1,2,3,4]。下一个更大元素是 3 。
  • 4 ,用加粗斜体标识,nums2 = [1,2,3,4]。不存在下一个更大元素,所以答案是 -1 。

提示:

1 <= nums1.length <= nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 104
nums1和nums2中所有整数 互不相同
nums1 中的所有整数同样出现在 nums2 中

进阶:你可以设计一个时间复杂度为 O(nums1.length + nums2.length) 的解决方案吗?

🌟 求解思路&实现代码&运行结果


⚡ 单调栈

🥦 求解思路
  1. 题目需要我们,nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。nums2中包含nums1中的元素,我们通过单调栈先在nums2中找下一个更大的元素,该过程我们额外借助一个HashMap来实现,最后在nums1中去寻找即可。
  2. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {int n = nums1.length;int m = nums2.length;int[] ans = new int[n];Deque<Integer> queue = new LinkedList<>();HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < m; i++) {while (!queue.isEmpty() && nums2[i] > nums2[queue.peekLast()]) {int j = queue.pollLast();map.put(nums2[j], nums2[i]);}queue.addLast(i);}for (int i = 0; i < n; i++) {ans[i] = map.getOrDefault(nums1[i], -1);}return ans;}
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

相关文章:

【LeetCode:496. 下一个更大元素 I + 单调栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

软考案例题总结

数据库故障与恢复 E-R图 关系规范化 SQL 涉及的知识点一般包括&#xff1a;表的创建、视图和索引创建的关键字、表的查询、聚集函数、子查询、分组查询、集合操作、外连接存储过程、游标、触发器以及表的更新、插入和删除...

第二证券炒股知识:股票破发后怎么办?

当一只新股的价格跌破其发行价时&#xff0c;往往会受到商场出资者的关注。关于股票破发后怎么办&#xff0c;第二证券下面就为我们具体介绍一下。 股票破发是指股票的商场价格低于其发行价格或最近一次增发价格&#xff0c;股票破发往往是由于多种要素共同作用的结果&#xf…...

Angular中,@HostListener装饰器

HostListener(input, [$event]) onInput(event: KeyboardEvent) {// 将输入值转换为大写const currentValue this.el.nativeElement.value;const upperCaseValue currentValue.toUpperCase();// 更新输入框的值if (currentValue ! upperCaseValue) {this.el.nativeElement.va…...

lammps案例:reaxff势模拟Fe(OH)3高温反应过程

大家好&#xff0c;我是小马老师。 本文分享一个reaxff反应势的案例。 该案例主要模拟Fe(OH)3在高温下的反应过程&#xff0c;主要代码来自lammps自带的案例。 lammps自带案例没有产物输出&#xff0c;故在此基础上稍加修改&#xff0c;增加了产物输出命令。 反应过程如下图…...

基于springboot实现政府管理系统项目【项目源码+论文说明】

基于springboot实现政府管理系统演示 摘要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff…...

5.28_Java语法_运算符,接收键盘数据

1、运算符 具体应用同我C语言操作符详解博客相同,另有补充会直接写 1.1、基本的算术运算符、符号做连接符 CSDN 具体应用同我C语言操作符详解博客相同 符号做连接符&#xff1a; ""符号与字符串运算连用的时候是用作连接符的&#xff0c;其结果依然是一个字符串…...

【数据分析】Numpy和Pandas库基本用法及实例--基于Japyter notebook实现

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 承接上篇的博客 数据分析—技术栈和开发环境搭…...

【网络协议】应用层协议HTTPS

文章目录 为什么引入HTTPS&#xff1f;基本概念加密的基本过程对称加密非对称加密中间人攻击证书 为什么引入HTTPS&#xff1f; 由于HTTP协议在网络传输中是明文传输的&#xff0c;那么当传输一些机密的文件或着对钱的操作时&#xff0c;就会有泄密的风险&#xff0c;从而引入…...

java nio FileChannel堆内堆外数据读写全流程分析及使用(附详细流程图)

这里是小奏,觉得文章不错可以关注公众号小奏技术 背景 java nio中文件读写不管是普通文件读写&#xff0c;还是基于mmap实现零拷贝&#xff0c;都离不开FileChannel这个类。 随便打开RocketMQ 源码搜索FileChannel 就可以看到使用频率 kafka也是 所以在java中文件读写FileCh…...

微服务架构-分支微服务设计模式

微服务架构-分支微服务设计模式 这种模式是聚合器模式的扩展&#xff0c;允许同时调用两个微服务链 分支微服务设计模式是一种用于构建大型系统的微服务架构模式&#xff0c;其核心思想是 将复杂的业务逻辑拆解为多个小的、相互独立的子系统&#xff0c;每个子系统由一个或多…...

关于Vue本地图片转file传到后端服务器(不通过组件上传)

一、代码 // 核心代码 const getMyFileFromLocalPath (localPath, filename) > {return fetch(localPath).then((response) > response.blob()).then((blob) > new File([blob], filename, { type: "image/png" })); // 假设是PNG格式// 获取真正的流文件…...

CCF20240302——相似度计算

CCF20240302——相似度计算 代码如下&#xff1a; #include <stdio.h> #include <string.h> #include <ctype.h>#define MAX_WORD_LEN 100 #define MAX_WORDS 10000int main() {int n, m;scanf("%d %d", &n, &m);char words1[MAX_WORDS][…...

C++的第一道门坎:类与对象(二)

一.类中生成的默认成员函数详解 0.类的6个默认成员函数 编译器会给类生成六个默认成员函数&#xff0c;在类中即使我们什么都不做&#xff0c;也会自动生成。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。 下面我们逐…...

C语言与内存息息相关的重要概念有哪些?

一、问题 C语⾔、C语⾔和C#语⾔&#xff0c;这三门语⾔&#xff0c;⼀个⽐⼀个加号&#xff08;&#xff09;多&#xff0c;C语⾔没有加号&#xff0c;C有两个加号&#xff0c;C#有四个加号。随着语⾔的发展&#xff0c;⼀个⽐⼀个简单&#xff0c;很多问题系统都给做了&#x…...

【chagpt】广泛使用API之前:考虑成本和数据隐私

文章目录 一. 定价和标记限制二. 安全和隐私 在广泛使用API之前&#xff0c;应该考虑两个重要因素&#xff1a;成本和数据隐私。 一. 定价和标记限制 OpenAI在Pricing页面上列出了模型的定价。请注意&#xff0c;OpenAI不一定及时更新该页面上的定价信息&#xff0c;因此实际…...

六月后考研如何备考看这一篇就够了

以下是考研六月后可以参考的规划&#xff1a; 6 月至 8 月&#xff08;强化阶段&#xff09;&#xff1a; 英语&#xff1a;继续背单词&#xff0c;开始刷历年真题中的阅读部分&#xff0c;仔细分析错题原因&#xff0c;总结解题技巧。数学&#xff1a;完成基础阶段的复习后&am…...

Linux主机连接腾讯云服务器详细配置

硬件条件 当然你要先有一个云服务器&#xff0c;腾讯云比阿里云便宜一点&#xff0c;所以就用腾讯云了 问了师兄买这个98的就行&#xff0c;选择CentOS&#xff0c;不要选Ubuntu&#xff0c;因为 嗯&#xff0c;大概就是这样 编程测试 云服务器当然是作为服务端 server.cpp…...

数字化工厂怎么收集,处理数据?

数字化工厂的数据收集与处理 数字化工厂是现代化工厂&#xff0c;利用数字技术和数据分析提高效率和优化流程。数据分析作为数字化工厂的核心技术&#xff0c;对数据的获取与处理至关重要。在数字化工厂中&#xff0c;数据的来源包括企业内部信息系统、物联网信息以及外部信息&…...

OOM不会导致JVM退出

问题来源 一次生产事故&#xff0c;由于一次性从数据库查询过多数据导致线程 OOM&#xff1a;Java heap space 异常&#xff08;千万级表&#xff0c;JVM堆内存2G&#xff09;&#xff0c;但是在线程OOM发生时&#xff0c;java进程却没有立即挂掉。 ##OOM与异常 说到底OutOfM…...

OpenHarmony FA启动机制全解析:从本地到远程的分布式能力实现

1. 项目概述&#xff1a;从“点击图标”到“界面呈现”的旅程当我们谈论一个应用在OpenHarmony上的启动&#xff0c;尤其是FA&#xff08;Feature Ability&#xff0c;特性能力&#xff09;的启动时&#xff0c;很多人脑海里浮现的可能是“用户点击图标&#xff0c;然后应用打开…...

C++详解实现Stack方法

栈简介栈本着先进后出的原则&#xff0c;来存取数据。作为数据结构中的一种&#xff0c;这里不多介绍相关栈。仅以此文记录C中栈的实现&#xff0c;可帮助提升编程能力与对栈的理解。stack模拟stack是一种容器适配器&#xff0c;专门在具有后进先出的上下文环境中&#xff0c;其…...

Leetcode 思路-105.从前序与中序序列构造二叉树

105.从前序与中序序列构造二叉树给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。1.简单思路根据先序遍历根节点在前的特点&#xff0c;取到根节点后&a…...

ThingsBoard共享属性实战:从MQTT订阅到规则链触发的完整数据流解析

ThingsBoard共享属性实战&#xff1a;从MQTT订阅到规则链触发的完整数据流解析 在物联网平台开发中&#xff0c;数据流的清晰理解和精确控制是构建可靠系统的关键。ThingsBoard作为一款开源的物联网平台&#xff0c;其共享属性机制和规则链引擎为开发者提供了强大的数据流转能力…...

解锁AMD Ryzen潜力:SMUDebugTool硬件调试完全指南

解锁AMD Ryzen潜力&#xff1a;SMUDebugTool硬件调试完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcod…...

孤胆英雄的黄昏,社会化智能的黎明:一文看透 Multi-Agent 架构底层逻辑

在过去的一两年里&#xff0c;我们见证了单体大语言模型&#xff08;LLM&#xff09;的疯狂进化。我们给它穿上基建外骨骼&#xff08;Harness&#xff09;&#xff0c;给它挂载无数的函数工具&#xff08;Skills&#xff09;&#xff0c;试图把它打造成一个无所不能的“全栈超…...

公域卖课佣金高、粉丝留不住?这套私域打法,完课率提升了3倍

公域卖课的两大痛点痛点一&#xff1a;佣金太高&#xff0c;利润被吃掉一大块。相信在公域卖过课的朋友都有体会。平台抽成、分销佣金、投流成本……七七八八算下来&#xff0c;到手的钱可能连一半都不到。你辛辛苦苦打磨的课程&#xff0c;大头却被别人拿走了。这感觉&#xf…...

HCK代码实现原理:揭秘AI辅助学术分析的核心算法

HCK代码实现原理&#xff1a;揭秘AI辅助学术分析的核心算法 【免费下载链接】sala-do-futuro-script O HCK um script de anlise acadmica assistida por IA, projetado para auxiliar estudantes na resoluo de questes de tarefas e provas da plataforma sala do futuro. …...

用Field II和MATLAB搞定超声波声场仿真:从理论推导到代码实战(附源码)

用Field II和MATLAB搞定超声波声场仿真&#xff1a;从理论推导到代码实战&#xff08;附源码&#xff09; 在医学超声成像和无损检测领域&#xff0c;精确模拟声场分布是优化成像质量的关键环节。Field II作为业界公认的超声波仿真工具&#xff0c;其强大的计算能力背后隐藏着大…...

RT-Thread Studio开发RA2L1:从环境搭建到GPIO输入输出实战

1. 项目概述与核心价值最近在捣鼓瑞萨电子的RA2L1 MCU开发板&#xff0c;想基于RT-Thread Studio这个国产IDE快速上手。我发现很多朋友拿到一块新板子&#xff0c;第一步“点亮LED”或者“读取按键”这个看似简单的操作&#xff0c;往往就卡在了环境搭建上。网上的资料要么过于…...